mirror of
				https://github.com/nyanmisaka/ffmpeg-rockchip.git
				synced 2025-10-31 12:36:41 +08:00 
			
		
		
		
	avcodec: cleanup utils.c
This commit is contained in:
		| @@ -60,7 +60,10 @@ void *av_fast_realloc(void *ptr, unsigned int *size, size_t min_size) | ||||
|     min_size = FFMAX(17 * min_size / 16 + 32, min_size); | ||||
|  | ||||
|     ptr = av_realloc(ptr, min_size); | ||||
|     if(!ptr) //we could set this to the unmodified min_size but this is safer if the user lost the ptr and uses NULL now | ||||
|     /* we could set this to the unmodified min_size but this is safer | ||||
|      * if the user lost the ptr and uses NULL now | ||||
|      */ | ||||
|     if (!ptr) | ||||
|         min_size = 0; | ||||
|  | ||||
|     *size = min_size; | ||||
| @@ -76,7 +79,8 @@ void av_fast_malloc(void *ptr, unsigned int *size, size_t min_size) | ||||
|     min_size = FFMAX(17 * min_size / 16 + 32, min_size); | ||||
|     av_free(*p); | ||||
|     *p = av_malloc(min_size); | ||||
|     if (!*p) min_size = 0; | ||||
|     if (!*p) | ||||
|         min_size = 0; | ||||
|     *size = min_size; | ||||
| } | ||||
|  | ||||
| @@ -98,8 +102,10 @@ static AVCodec *first_avcodec = NULL; | ||||
|  | ||||
| AVCodec *av_codec_next(const AVCodec *c) | ||||
| { | ||||
|     if(c) return c->next; | ||||
|     else  return first_avcodec; | ||||
|     if (c) | ||||
|         return c->next; | ||||
|     else | ||||
|         return first_avcodec; | ||||
| } | ||||
|  | ||||
| static void avcodec_init(void) | ||||
| @@ -128,7 +134,8 @@ void avcodec_register(AVCodec *codec) | ||||
|     AVCodec **p; | ||||
|     avcodec_init(); | ||||
|     p = &first_avcodec; | ||||
|     while (*p != NULL) p = &(*p)->next; | ||||
|     while (*p != NULL) | ||||
|         p = &(*p)->next; | ||||
|     *p          = codec; | ||||
|     codec->next = NULL; | ||||
|  | ||||
| @@ -141,7 +148,8 @@ unsigned avcodec_get_edge_width(void) | ||||
|     return EDGE_WIDTH; | ||||
| } | ||||
|  | ||||
| void avcodec_set_dimensions(AVCodecContext *s, int width, int height){ | ||||
| void avcodec_set_dimensions(AVCodecContext *s, int width, int height) | ||||
| { | ||||
|     s->coded_width  = width; | ||||
|     s->coded_height = height; | ||||
|     s->width        = width; | ||||
| @@ -216,7 +224,8 @@ void avcodec_align_dimensions2(AVCodecContext *s, int *width, int *height, | ||||
|         } | ||||
|         break; | ||||
|     case PIX_FMT_BGR24: | ||||
|         if((s->codec_id == AV_CODEC_ID_MSZH) || (s->codec_id == AV_CODEC_ID_ZLIB)){ | ||||
|         if ((s->codec_id == AV_CODEC_ID_MSZH) || | ||||
|             (s->codec_id == AV_CODEC_ID_ZLIB)) { | ||||
|             w_align = 4; | ||||
|             h_align = 4; | ||||
|         } | ||||
| @@ -230,16 +239,19 @@ void avcodec_align_dimensions2(AVCodecContext *s, int *width, int *height, | ||||
|     *width  = FFALIGN(*width, w_align); | ||||
|     *height = FFALIGN(*height, h_align); | ||||
|     if (s->codec_id == AV_CODEC_ID_H264) | ||||
|         *height+=2; // some of the optimized chroma MC reads one line too much | ||||
|         // some of the optimized chroma MC reads one line too much | ||||
|         *height += 2; | ||||
|  | ||||
|     for (i = 0; i < 4; i++) | ||||
|         linesize_align[i] = STRIDE_ALIGN; | ||||
| } | ||||
|  | ||||
| void avcodec_align_dimensions(AVCodecContext *s, int *width, int *height){ | ||||
| void avcodec_align_dimensions(AVCodecContext *s, int *width, int *height) | ||||
| { | ||||
|     int chroma_shift = av_pix_fmt_descriptors[s->pix_fmt].log2_chroma_w; | ||||
|     int linesize_align[AV_NUM_DATA_POINTERS]; | ||||
|     int align; | ||||
|  | ||||
|     avcodec_align_dimensions2(s, width, height, linesize_align); | ||||
|     align               = FFMAX(linesize_align[0], linesize_align[3]); | ||||
|     linesize_align[1] <<= chroma_shift; | ||||
| @@ -305,7 +317,7 @@ static int audio_get_buffer(AVCodecContext *avctx, AVFrame *frame) | ||||
|     buf = avci->buffer; | ||||
|  | ||||
|     /* if there is a previously-used internal buffer, check its size and | ||||
|        channel count to see if we can reuse it */ | ||||
|      * channel count to see if we can reuse it */ | ||||
|     if (buf->extended_data) { | ||||
|         /* if current buffer is too small, free it */ | ||||
|         if (buf->extended_data[0] && buf_size > buf->audio_data_size) { | ||||
| @@ -316,7 +328,7 @@ static int audio_get_buffer(AVCodecContext *avctx, AVFrame *frame) | ||||
|             buf->data[0]       = NULL; | ||||
|         } | ||||
|         /* if number of channels has changed, reset and/or free extended data | ||||
|            pointers but leave data buffer in buf->data[0] for reuse */ | ||||
|          * pointers but leave data buffer in buf->data[0] for reuse */ | ||||
|         if (buf->nb_channels != avctx->channels) { | ||||
|             if (buf->extended_data != buf->data) | ||||
|                 av_free(buf->extended_data); | ||||
| @@ -325,7 +337,7 @@ static int audio_get_buffer(AVCodecContext *avctx, AVFrame *frame) | ||||
|     } | ||||
|  | ||||
|     /* if there is no previous buffer or the previous buffer cannot be used | ||||
|        as-is, allocate a new buffer and/or rearrange the channel pointers */ | ||||
|      * as-is, allocate a new buffer and/or rearrange the channel pointers */ | ||||
|     if (!buf->extended_data) { | ||||
|         if (!buf->data[0]) { | ||||
|             if (!(buf->data[0] = av_mallocz(buf_size))) | ||||
| @@ -353,8 +365,10 @@ static int audio_get_buffer(AVCodecContext *avctx, AVFrame *frame) | ||||
|  | ||||
|     frame->type = FF_BUFFER_TYPE_INTERNAL; | ||||
|  | ||||
|     if (avctx->pkt) frame->pkt_pts = avctx->pkt->pts; | ||||
|     else            frame->pkt_pts = AV_NOPTS_VALUE; | ||||
|     if (avctx->pkt) | ||||
|         frame->pkt_pts = avctx->pkt->pts; | ||||
|     else | ||||
|         frame->pkt_pts = AV_NOPTS_VALUE; | ||||
|     frame->reordered_opaque = avctx->reordered_opaque; | ||||
|  | ||||
|     frame->sample_rate    = avctx->sample_rate; | ||||
| @@ -428,9 +442,8 @@ static int video_get_buffer(AVCodecContext *s, AVFrame *pic) | ||||
|             w += w & ~(w - 1); | ||||
|  | ||||
|             unaligned = 0; | ||||
|             for (i=0; i<4; i++){ | ||||
|             for (i = 0; i < 4; i++) | ||||
|                 unaligned |= picture.linesize[i] % stride_align[i]; | ||||
|             } | ||||
|         } while (unaligned); | ||||
|  | ||||
|         tmpsize = av_image_fill_pointers(picture.data, s->pix_fmt, h, NULL, picture.linesize); | ||||
| @@ -451,7 +464,8 @@ static int video_get_buffer(AVCodecContext *s, AVFrame *pic) | ||||
|             buf->linesize[i] = picture.linesize[i]; | ||||
|  | ||||
|             buf->base[i] = av_malloc(size[i] + 16); //FIXME 16 | ||||
|             if(buf->base[i]==NULL) return -1; | ||||
|             if (buf->base[i] == NULL) | ||||
|                 return -1; | ||||
|             memset(buf->base[i], 128, size[i]); | ||||
|  | ||||
|             // no edge if EDGE EMU or not planar YUV | ||||
| @@ -484,8 +498,10 @@ static int video_get_buffer(AVCodecContext *s, AVFrame *pic) | ||||
|     pic->format              = buf->pix_fmt; | ||||
|     pic->sample_aspect_ratio = s->sample_aspect_ratio; | ||||
|  | ||||
|     if(s->pkt) pic->pkt_pts= s->pkt->pts; | ||||
|     else       pic->pkt_pts= AV_NOPTS_VALUE; | ||||
|     if (s->pkt) | ||||
|         pic->pkt_pts = s->pkt->pts; | ||||
|     else | ||||
|         pic->pkt_pts = AV_NOPTS_VALUE; | ||||
|     pic->reordered_opaque = s->reordered_opaque; | ||||
|  | ||||
|     if (s->debug & FF_DEBUG_BUFFERS) | ||||
| @@ -507,7 +523,8 @@ int avcodec_default_get_buffer(AVCodecContext *avctx, AVFrame *frame) | ||||
|     } | ||||
| } | ||||
|  | ||||
| void avcodec_default_release_buffer(AVCodecContext *s, AVFrame *pic){ | ||||
| void avcodec_default_release_buffer(AVCodecContext *s, AVFrame *pic) | ||||
| { | ||||
|     int i; | ||||
|     InternalBuffer *buf, *last; | ||||
|     AVCodecInternal *avci = s->internal; | ||||
| @@ -532,10 +549,9 @@ void avcodec_default_release_buffer(AVCodecContext *s, AVFrame *pic){ | ||||
|             FFSWAP(InternalBuffer, *buf, *last); | ||||
|     } | ||||
|  | ||||
|     for (i = 0; i < AV_NUM_DATA_POINTERS; i++) { | ||||
|     for (i = 0; i < AV_NUM_DATA_POINTERS; i++) | ||||
|         pic->data[i] = NULL; | ||||
| //        pic->base[i]=NULL; | ||||
|     } | ||||
|      //printf("R%X\n", pic->opaque); | ||||
|  | ||||
|     if (s->debug & FF_DEBUG_BUFFERS) | ||||
| @@ -543,7 +559,8 @@ void avcodec_default_release_buffer(AVCodecContext *s, AVFrame *pic){ | ||||
|                                 "buffers used\n", pic, avci->buffer_count); | ||||
| } | ||||
|  | ||||
| int avcodec_default_reget_buffer(AVCodecContext *s, AVFrame *pic){ | ||||
| int avcodec_default_reget_buffer(AVCodecContext *s, AVFrame *pic) | ||||
| { | ||||
|     AVFrame temp_pic; | ||||
|     int i; | ||||
|  | ||||
| @@ -560,8 +577,10 @@ int avcodec_default_reget_buffer(AVCodecContext *s, AVFrame *pic){ | ||||
|  | ||||
|     /* If internal buffer type return the same buffer */ | ||||
|     if (pic->type == FF_BUFFER_TYPE_INTERNAL) { | ||||
|         if(s->pkt) pic->pkt_pts= s->pkt->pts; | ||||
|         else       pic->pkt_pts= AV_NOPTS_VALUE; | ||||
|         if (s->pkt) | ||||
|             pic->pkt_pts = s->pkt->pts; | ||||
|         else | ||||
|             pic->pkt_pts = AV_NOPTS_VALUE; | ||||
|         pic->reordered_opaque = s->reordered_opaque; | ||||
|         return 0; | ||||
|     } | ||||
| @@ -583,33 +602,39 @@ int avcodec_default_reget_buffer(AVCodecContext *s, AVFrame *pic){ | ||||
|     return 0; | ||||
| } | ||||
|  | ||||
| int avcodec_default_execute(AVCodecContext *c, int (*func)(AVCodecContext *c2, void *arg2),void *arg, int *ret, int count, int size){ | ||||
| int avcodec_default_execute(AVCodecContext *c, int (*func)(AVCodecContext *c2, void *arg2), void *arg, int *ret, int count, int size) | ||||
| { | ||||
|     int i; | ||||
|  | ||||
|     for (i = 0; i < count; i++) { | ||||
|         int r = func(c, (char *)arg + i * size); | ||||
|         if(ret) ret[i]= r; | ||||
|         if (ret) | ||||
|             ret[i] = r; | ||||
|     } | ||||
|     return 0; | ||||
| } | ||||
|  | ||||
| int avcodec_default_execute2(AVCodecContext *c, int (*func)(AVCodecContext *c2, void *arg2, int jobnr, int threadnr),void *arg, int *ret, int count){ | ||||
| int avcodec_default_execute2(AVCodecContext *c, int (*func)(AVCodecContext *c2, void *arg2, int jobnr, int threadnr), void *arg, int *ret, int count) | ||||
| { | ||||
|     int i; | ||||
|  | ||||
|     for (i = 0; i < count; i++) { | ||||
|         int r = func(c, arg, i, 0); | ||||
|         if(ret) ret[i]= r; | ||||
|         if (ret) | ||||
|             ret[i] = r; | ||||
|     } | ||||
|     return 0; | ||||
| } | ||||
|  | ||||
| enum PixelFormat avcodec_default_get_format(struct AVCodecContext *s, const enum PixelFormat *fmt){ | ||||
| enum PixelFormat avcodec_default_get_format(struct AVCodecContext *s, const enum PixelFormat *fmt) | ||||
| { | ||||
|     while (*fmt != PIX_FMT_NONE && ff_is_hwaccel_pix_fmt(*fmt)) | ||||
|         ++fmt; | ||||
|     return fmt[0]; | ||||
| } | ||||
|  | ||||
| void avcodec_get_frame_defaults(AVFrame *pic){ | ||||
| void avcodec_get_frame_defaults(AVFrame *pic) | ||||
| { | ||||
|     memset(pic, 0, sizeof(AVFrame)); | ||||
|  | ||||
|     pic->pts                 = AV_NOPTS_VALUE; | ||||
| @@ -618,10 +643,12 @@ void avcodec_get_frame_defaults(AVFrame *pic){ | ||||
|     pic->format              = -1; /* unknown */ | ||||
| } | ||||
|  | ||||
| AVFrame *avcodec_alloc_frame(void){ | ||||
| AVFrame *avcodec_alloc_frame(void) | ||||
| { | ||||
|     AVFrame *pic = av_malloc(sizeof(AVFrame)); | ||||
|  | ||||
|     if(pic==NULL) return NULL; | ||||
|     if (pic == NULL) | ||||
|         return NULL; | ||||
|  | ||||
|     avcodec_get_frame_defaults(pic); | ||||
|  | ||||
| @@ -706,7 +733,7 @@ int attribute_align_arg avcodec_open2(AVCodecContext *avctx, const AVCodec *code | ||||
|     } | ||||
|  | ||||
|     /* if the decoder init function was already called previously, | ||||
|        free the already allocated subtitle_header before overwriting it */ | ||||
|      * free the already allocated subtitle_header before overwriting it */ | ||||
|     if (av_codec_is_decoder(codec)) | ||||
|         av_freep(&avctx->subtitle_header); | ||||
|  | ||||
| @@ -990,8 +1017,8 @@ int attribute_align_arg avcodec_encode_audio2(AVCodecContext *avctx, | ||||
|     } | ||||
|  | ||||
|     /* NOTE: if we add any audio encoders which output non-keyframe packets, | ||||
|              this needs to be moved to the encoders, but for now we can do it | ||||
|              here to simplify things */ | ||||
|      *       this needs to be moved to the encoders, but for now we can do it | ||||
|      *       here to simplify things */ | ||||
|     avpkt->flags |= AV_PKT_FLAG_KEY; | ||||
|  | ||||
|     if (padded_frame) { | ||||
| @@ -1026,7 +1053,7 @@ int attribute_align_arg avcodec_encode_audio(AVCodecContext *avctx, | ||||
|             frame->nb_samples = avctx->frame_size; | ||||
|         } else { | ||||
|             /* if frame_size is not set, the number of samples must be | ||||
|                calculated from the buffer size */ | ||||
|              * calculated from the buffer size */ | ||||
|             int64_t nb_samples; | ||||
|             if (!av_get_bits_per_sample(avctx->codec_id)) { | ||||
|                 av_log(avctx, AV_LOG_ERROR, "avcodec_encode_audio() does not " | ||||
| @@ -1042,7 +1069,7 @@ int attribute_align_arg avcodec_encode_audio(AVCodecContext *avctx, | ||||
|         } | ||||
|  | ||||
|         /* it is assumed that the samples buffer is large enough based on the | ||||
|            relevant parameters */ | ||||
|          * relevant parameters */ | ||||
|         samples_size = av_samples_get_buffer_size(NULL, avctx->channels, | ||||
|                                                   frame->nb_samples, | ||||
|                                                   avctx->sample_fmt, 1); | ||||
| @@ -1053,8 +1080,8 @@ int attribute_align_arg avcodec_encode_audio(AVCodecContext *avctx, | ||||
|             return ret; | ||||
|  | ||||
|         /* fabricate frame pts from sample count. | ||||
|            this is needed because the avcodec_encode_audio() API does not have | ||||
|            a way for the user to provide pts */ | ||||
|          * this is needed because the avcodec_encode_audio() API does not have | ||||
|          * a way for the user to provide pts */ | ||||
|         frame->pts = ff_samples_to_time_base(avctx, | ||||
|                                              avctx->internal->sample_count); | ||||
|         avctx->internal->sample_count += frame->nb_samples; | ||||
| @@ -1082,6 +1109,7 @@ int attribute_align_arg avcodec_encode_audio(AVCodecContext *avctx, | ||||
|  | ||||
|     return ret ? ret : pkt.size; | ||||
| } | ||||
|  | ||||
| #endif | ||||
|  | ||||
| #if FF_API_OLD_ENCODE_VIDEO | ||||
| @@ -1117,6 +1145,7 @@ int attribute_align_arg avcodec_encode_video(AVCodecContext *avctx, uint8_t *buf | ||||
|  | ||||
|     return ret ? ret : pkt.size; | ||||
| } | ||||
|  | ||||
| #endif | ||||
|  | ||||
| int attribute_align_arg avcodec_encode_video2(AVCodecContext *avctx, | ||||
| @@ -1303,6 +1332,7 @@ int attribute_align_arg avcodec_decode_audio3(AVCodecContext *avctx, int16_t *sa | ||||
|     } | ||||
|     return ret; | ||||
| } | ||||
|  | ||||
| #endif | ||||
|  | ||||
| int attribute_align_arg avcodec_decode_audio4(AVCodecContext *avctx, | ||||
| @@ -1353,8 +1383,7 @@ void avsubtitle_free(AVSubtitle *sub) | ||||
| { | ||||
|     int i; | ||||
|  | ||||
|     for (i = 0; i < sub->num_rects; i++) | ||||
|     { | ||||
|     for (i = 0; i < sub->num_rects; i++) { | ||||
|         av_freep(&sub->rects[i]->pict.data[0]); | ||||
|         av_freep(&sub->rects[i]->pict.data[1]); | ||||
|         av_freep(&sub->rects[i]->pict.data[2]); | ||||
| @@ -1526,7 +1555,7 @@ void avcodec_string(char *buf, int buf_size, AVCodecContext *enc, int encode) | ||||
|         profile = av_get_profile_name(p, enc->profile); | ||||
|     } else if (enc->codec_id == AV_CODEC_ID_MPEG2TS) { | ||||
|         /* fake mpeg2 transport stream codec (currently not | ||||
|            registered) */ | ||||
|          * registered) */ | ||||
|         codec_name = "mpeg2ts"; | ||||
|     } else if (enc->codec_name[0] != '\0') { | ||||
|         codec_name = enc->codec_name; | ||||
| @@ -1923,9 +1952,11 @@ int av_get_audio_frame_duration(AVCodecContext *avctx, int frame_bytes) | ||||
| } | ||||
|  | ||||
| #if !HAVE_THREADS | ||||
| int ff_thread_init(AVCodecContext *s){ | ||||
| int ff_thread_init(AVCodecContext *s) | ||||
| { | ||||
|     return -1; | ||||
| } | ||||
|  | ||||
| #endif | ||||
|  | ||||
| unsigned int av_xiphlacing(unsigned char *s, unsigned int v) | ||||
| @@ -1942,7 +1973,8 @@ unsigned int av_xiphlacing(unsigned char *s, unsigned int v) | ||||
|     return n; | ||||
| } | ||||
|  | ||||
| int ff_match_2uint16(const uint16_t (*tab)[2], int size, int a, int b){ | ||||
| int ff_match_2uint16(const uint16_t(*tab)[2], int size, int a, int b) | ||||
| { | ||||
|     int i; | ||||
|     for (i = 0; i < size && !(tab[i][0] == a && tab[i][1] == b); i++) ; | ||||
|     return i; | ||||
| @@ -1993,11 +2025,10 @@ AVHWAccel *ff_find_hwaccel(enum AVCodecID codec_id, enum PixelFormat pix_fmt) | ||||
| { | ||||
|     AVHWAccel *hwaccel = NULL; | ||||
|  | ||||
|     while((hwaccel= av_hwaccel_next(hwaccel))){ | ||||
|     while ((hwaccel = av_hwaccel_next(hwaccel))) | ||||
|         if (hwaccel->id == codec_id | ||||
|             && hwaccel->pix_fmt == pix_fmt) | ||||
|             return hwaccel; | ||||
|     } | ||||
|     return NULL; | ||||
| } | ||||
|  | ||||
|   | ||||
		Reference in New Issue
	
	Block a user
	 Luca Barbato
					Luca Barbato