Index: gpac-0.5.2/modules/ffmpeg_in/ffmpeg_decode.c =================================================================== --- gpac-0.5.2.orig/modules/ffmpeg_in/ffmpeg_decode.c +++ gpac-0.5.2/modules/ffmpeg_in/ffmpeg_decode.c @@ -102,7 +102,7 @@ static void FFDEC_LoadDSI(FFDec *ffd, GF } switch (codec->id) { - case CODEC_ID_SVQ3: + case AV_CODEC_ID_SVQ3: { u32 at_type, size; size = gf_bs_read_u32(bs); @@ -240,10 +240,10 @@ static GF_Err FFDEC_AttachStream(GF_Base (*ctx)->codec_type = AVMEDIA_TYPE_VIDEO; switch (ffd->oti) { case GPAC_OTI_VIDEO_MPEG4_PART2: - codec_id = CODEC_ID_MPEG4; + codec_id = AV_CODEC_ID_MPEG4; break; case GPAC_OTI_VIDEO_AVC: - codec_id = CODEC_ID_H264; + codec_id = AV_CODEC_ID_H264; break; #ifdef HAS_HEVC case GPAC_OTI_VIDEO_HEVC: @@ -257,14 +257,14 @@ static GF_Err FFDEC_AttachStream(GF_Base case GPAC_OTI_VIDEO_MPEG2_SPATIAL: case GPAC_OTI_VIDEO_MPEG2_HIGH: case GPAC_OTI_VIDEO_MPEG2_422: - codec_id = CODEC_ID_MPEG2VIDEO; + codec_id = AV_CODEC_ID_MPEG2VIDEO; break; case GPAC_OTI_IMAGE_JPEG: - codec_id = CODEC_ID_MJPEG; + codec_id = AV_CODEC_ID_MJPEG; ffd->is_image=1; break; case 0xFF: - codec_id = CODEC_ID_SVQ3; + codec_id = AV_CODEC_ID_SVQ3; break; } } else if (ffd->st==GF_STREAM_AUDIO) { @@ -273,18 +273,18 @@ static GF_Err FFDEC_AttachStream(GF_Base case GPAC_OTI_AUDIO_MPEG2_PART3: case GPAC_OTI_AUDIO_MPEG1: (*ctx)->frame_size = 1152; - codec_id = CODEC_ID_MP2; + codec_id = AV_CODEC_ID_MP2; break; case GPAC_OTI_AUDIO_AC3: - codec_id = CODEC_ID_AC3; + codec_id = AV_CODEC_ID_AC3; break; case GPAC_OTI_AUDIO_EAC3: - codec_id = CODEC_ID_EAC3; + codec_id = AV_CODEC_ID_EAC3; break; } } else if ((ffd->st==GF_STREAM_ND_SUBPIC) && (ffd->oti==0xe0)) { - codec_id = CODEC_ID_DVD_SUBTITLE; + codec_id = AV_CODEC_ID_DVD_SUBTITLE; } *codec = avcodec_find_decoder(codec_id); } @@ -375,8 +375,8 @@ static GF_Err FFDEC_AttachStream(GF_Base #endif //HAS_HEVC if (!ffd->output_cb_size) ffd->output_cb_size = 4; - if (codec_id == CODEC_ID_RAWVIDEO) { - (*ctx)->codec_id = CODEC_ID_RAWVIDEO; + if (codec_id == AV_CODEC_ID_RAWVIDEO) { + (*ctx)->codec_id = AV_CODEC_ID_RAWVIDEO; (*ctx)->pix_fmt = ffd->raw_pix_fmt; if ((*ctx)->extradata && strstr((char *) (*ctx)->extradata, "BottomUp")) ffd->flipped = 1; } else { @@ -388,7 +388,7 @@ static GF_Err FFDEC_AttachStream(GF_Base } /*setup audio streams*/ if (ffd->st==GF_STREAM_AUDIO) { - if ((*codec)->id == CODEC_ID_MP2) { + if ((*codec)->id == AV_CODEC_ID_MP2) { (*ctx)->frame_size = ((*ctx)->sample_rate > 24000) ? 1152 : 576; } /*may be 0 (cfg not known yet)*/ @@ -408,17 +408,17 @@ static GF_Err FFDEC_AttachStream(GF_Base } else { switch ((*codec)->id) { - case CODEC_ID_MJPEG: - case CODEC_ID_MJPEGB: - case CODEC_ID_LJPEG: + case AV_CODEC_ID_MJPEG: + case AV_CODEC_ID_MJPEGB: + case AV_CODEC_ID_LJPEG: #if (LIBAVCODEC_VERSION_INT > AV_VERSION_INT(51, 20, 0)) - case CODEC_ID_GIF: + case AV_CODEC_ID_GIF: #endif - case CODEC_ID_RAWVIDEO: + case AV_CODEC_ID_RAWVIDEO: ffd->pix_fmt = GF_PIXEL_RGB_24; break; - case CODEC_ID_DVD_SUBTITLE: + case AV_CODEC_ID_DVD_SUBTITLE: #if !defined(FF_API_AVFRAME_LAVC) *frame = avcodec_alloc_frame(); #else @@ -843,7 +843,7 @@ redecode: } - if ( ctx->codec_id == CODEC_ID_RAWVIDEO) { + if ( ctx->codec_id == AV_CODEC_ID_RAWVIDEO) { if (*outBufferLength != ffd->out_size) { *outBufferLength = ffd->out_size; return GF_BUFFER_TOO_SMALL; @@ -852,7 +852,7 @@ redecode: *outBufferLength = ffd->out_size; assert(inBufferLength==ffd->out_size); - if (ffd->raw_pix_fmt==PIX_FMT_BGR24) { + if (ffd->raw_pix_fmt==AV_PIX_FMT_BGR24) { s32 i, j; for (j=0; jheight; j++) { u8 *src = (u8 *) inBuffer + j*3*ctx->width; @@ -940,7 +940,7 @@ redecode: /*OK we loose the DSI stored in the codec context, but H263 doesn't need any, and if we're here this means the DSI was broken, so no big deal*/ avcodec_close(ctx); - *codec = avcodec_find_decoder(CODEC_ID_H263); + *codec = avcodec_find_decoder(AV_CODEC_ID_H263); #ifdef USE_AVCTX3 if (! (*codec) || (avcodec_open2(ctx, *codec, NULL)<0)) return GF_NON_COMPLIANT_BITSTREAM; @@ -991,7 +991,7 @@ redecode: stride = frame->linesize[0]; #ifndef NO_10bit - if ((ctx->pix_fmt == PIX_FMT_YUV420P10LE) && ffd->output_as_8bit && (frame->linesize[0] >= 2*w) ) { + if ((ctx->pix_fmt == AV_PIX_FMT_YUV420P10LE) && ffd->output_as_8bit && (frame->linesize[0] >= 2*w) ) { ffd->conv_to_8bit = 1; stride=w; } @@ -1000,7 +1000,7 @@ redecode: /*recompute outsize in case on-the-fly change*/ if ((w != ctx->width) || (h != ctx->height) || (ffd->direct_output && (stride != ffd->stride)) - || ((ffd->out_pix_fmt==GF_PIXEL_YV12) && (ctx->pix_fmt != PIX_FMT_YUV420P) && !ffd->output_as_8bit ) + || ((ffd->out_pix_fmt==GF_PIXEL_YV12) && (ctx->pix_fmt != AV_PIX_FMT_YUV420P) && !ffd->output_as_8bit ) //need to realloc the conversion buffer || (ffd->conv_to_8bit && !ffd->conv_buffer && ffd->direct_output) ) { @@ -1011,7 +1011,7 @@ redecode: } #ifndef NO_10bit //this YUV format is handled natively in GPAC - else if ((ctx->pix_fmt == PIX_FMT_YUV420P10LE) && !ffd->output_as_8bit) { + else if ((ctx->pix_fmt == AV_PIX_FMT_YUV420P10LE) && !ffd->output_as_8bit) { ffd->stride = ffd->direct_output ? frame->linesize[0] : ctx->width*2; outsize = ffd->stride * ctx->height * 3 / 2; ffd->out_pix_fmt = GF_PIXEL_YV12_10; @@ -1157,23 +1157,20 @@ redecode: if (ffd->out_pix_fmt==GF_PIXEL_RGB_24) { pict.data[0] = (uint8_t *)outBuffer; pict.linesize[0] = 3*ctx->width; - pix_out = PIX_FMT_RGB24; + pix_out = AV_PIX_FMT_RGB24; } else { pict.data[0] = (uint8_t *)outBuffer; pict.data[1] = (uint8_t *)outBuffer + ffd->stride * ctx->height; pict.data[2] = (uint8_t *)outBuffer + 5 * ffd->stride * ctx->height / 4; pict.linesize[0] = ffd->stride; pict.linesize[1] = pict.linesize[2] = ffd->stride/2; - pix_out = PIX_FMT_YUV420P; + pix_out = AV_PIX_FMT_YUV420P; #ifndef NO_10bit //this YUV format is handled natively in GPAC - if (ctx->pix_fmt==PIX_FMT_YUV420P10LE) { - pix_out = PIX_FMT_YUV420P10LE; + if (ctx->pix_fmt==AV_PIX_FMT_YUV420P10LE) { + pix_out = AV_PIX_FMT_YUV420P10LE; } #endif - if (!mmlevel && frame->interlaced_frame) { - avpicture_deinterlace((AVPicture *) frame, (AVPicture *) frame, ctx->pix_fmt, ctx->width, ctx->height); - } } pict.data[3] = 0; pict.linesize[3] = 0; @@ -1263,13 +1260,13 @@ static u32 FFDEC_CanHandleStream(GF_Base switch (ffd->oti) { case GPAC_OTI_AUDIO_MPEG2_PART3: case GPAC_OTI_AUDIO_MPEG1: - codec_id = CODEC_ID_MP2; + codec_id = AV_CODEC_ID_MP2; break; case GPAC_OTI_AUDIO_AC3: - codec_id = CODEC_ID_AC3; + codec_id = AV_CODEC_ID_AC3; break; case GPAC_OTI_AUDIO_EAC3: - codec_id = CODEC_ID_EAC3; + codec_id = AV_CODEC_ID_EAC3; break; } } @@ -1309,11 +1306,11 @@ static u32 FFDEC_CanHandleStream(GF_Base switch (ffd->oti) { /*MPEG-4 v1 simple profile*/ case GPAC_OTI_VIDEO_MPEG4_PART2: - codec_id = CODEC_ID_MPEG4; + codec_id = AV_CODEC_ID_MPEG4; break; /*H264 (not std OTI, just the way we use it internally)*/ case GPAC_OTI_VIDEO_AVC: - codec_id = CODEC_ID_H264; + codec_id = AV_CODEC_ID_H264; break; #ifdef HAS_HEVC case GPAC_OTI_VIDEO_HEVC: @@ -1329,11 +1326,11 @@ static u32 FFDEC_CanHandleStream(GF_Base case GPAC_OTI_VIDEO_MPEG2_SPATIAL: case GPAC_OTI_VIDEO_MPEG2_HIGH: case GPAC_OTI_VIDEO_MPEG2_422: - codec_id = CODEC_ID_MPEG2VIDEO; + codec_id = AV_CODEC_ID_MPEG2VIDEO; break; /*JPEG*/ case GPAC_OTI_IMAGE_JPEG: - codec_id = CODEC_ID_MJPEG; + codec_id = AV_CODEC_ID_MJPEG; /*return maybe supported as FFMPEG JPEG decoder has some issues with many files, so let's use it only if no other dec is available*/ if (avcodec_find_decoder(codec_id) != NULL) Index: gpac-0.5.2/modules/ffmpeg_in/ffmpeg_demux.c =================================================================== --- gpac-0.5.2.orig/modules/ffmpeg_in/ffmpeg_demux.c +++ gpac-0.5.2/modules/ffmpeg_in/ffmpeg_demux.c @@ -333,13 +333,13 @@ static GF_ESD *FFD_GetESDescriptor(FFDem AVCodecContext *dec = ffd->ctx->streams[ffd->audio_st]->codec; esd->slConfig->timestampResolution = ffd->audio_tscale.den; switch (dec->codec_id) { - case CODEC_ID_MP2: + case AV_CODEC_ID_MP2: esd->decoderConfig->objectTypeIndication = GPAC_OTI_AUDIO_MPEG1; break; - case CODEC_ID_MP3: + case AV_CODEC_ID_MP3: esd->decoderConfig->objectTypeIndication = GPAC_OTI_AUDIO_MPEG2_PART3; break; - case CODEC_ID_AAC: + case AV_CODEC_ID_AAC: if (!dec->extradata_size) goto opaque_audio; esd->decoderConfig->objectTypeIndication = GPAC_OTI_AUDIO_AAC_MPEG4; esd->decoderConfig->decoderSpecificInfo->dataLength = dec->extradata_size; @@ -374,25 +374,25 @@ opaque_audio: AVCodecContext *dec = ffd->ctx->streams[ffd->video_st]->codec; esd->slConfig->timestampResolution = ffd->video_tscale.den; switch (dec->codec_id) { - case CODEC_ID_MPEG4: + case AV_CODEC_ID_MPEG4: /*there is a bug in fragmentation of raw H264 in ffmpeg, the NALU startcode (0x00000001) is split across two frames - we therefore force internal ffmpeg codec ID to avoid NALU size recompute at the decoder level*/ -// case CODEC_ID_H264: +// case AV_CODEC_ID_H264: /*if dsi not detected force use ffmpeg*/ if (!dec->extradata_size) goto opaque_video; /*otherwise use any MPEG-4 Visual*/ - esd->decoderConfig->objectTypeIndication = (dec->codec_id==CODEC_ID_H264) ? GPAC_OTI_VIDEO_AVC : GPAC_OTI_VIDEO_MPEG4_PART2; + esd->decoderConfig->objectTypeIndication = (dec->codec_id==AV_CODEC_ID_H264) ? GPAC_OTI_VIDEO_AVC : GPAC_OTI_VIDEO_MPEG4_PART2; esd->decoderConfig->decoderSpecificInfo->dataLength = dec->extradata_size; esd->decoderConfig->decoderSpecificInfo->data = gf_malloc(sizeof(char)*dec->extradata_size); memcpy(esd->decoderConfig->decoderSpecificInfo->data, dec->extradata, sizeof(char)*dec->extradata_size); break; - case CODEC_ID_MPEG1VIDEO: + case AV_CODEC_ID_MPEG1VIDEO: esd->decoderConfig->objectTypeIndication = GPAC_OTI_VIDEO_MPEG1; break; - case CODEC_ID_MPEG2VIDEO: + case AV_CODEC_ID_MPEG2VIDEO: esd->decoderConfig->objectTypeIndication = GPAC_OTI_VIDEO_MPEG2_422; break; default: Index: gpac-0.5.2/modules/Makefile =================================================================== --- gpac-0.5.2.orig/modules/Makefile +++ gpac-0.5.2/modules/Makefile @@ -100,12 +100,10 @@ endif ifneq ($(CONFIG_FFMPEG), no) -ifneq ($(CONFIG_LIBAV), new) #we don't support libav newest APIs ifeq ($(CONFIG_OPENHEVC),no) PLUGDIRS+=ffmpeg_in endif endif -endif ifeq ($(CONFIG_OPENHEVC), yes) ifeq ($(CONFIG_FFMPEG), no) --- gpac/applications/dashcast/video_encoder.c.orig 2016-02-17 19:57:23.772138846 +0000 +++ gpac/applications/dashcast/video_encoder.c 2016-02-17 19:57:52.468686697 +0000 @@ -86,7 +86,7 @@ video_output_file->codec_ctx->time_base.den = video_data_conf->time_base.den; video_output_file->codec_ctx->time_base.num = video_data_conf->time_base.num * video_data_conf->time_base.den / video_data_conf->framerate; } - video_output_file->codec_ctx->pix_fmt = PIX_FMT_YUV420P; + video_output_file->codec_ctx->pix_fmt = AV_PIX_FMT_YUV420P; video_output_file->codec_ctx->gop_size = video_data_conf->framerate; // video_output_file->codec_ctx->codec_id = video_codec->id; @@ -96,7 +96,7 @@ // video_output_file->codec_ctx->height = video_data_conf->height; // video_output_file->codec_ctx->time_base = (AVRational) {1 , // video_output_file->video_data_conf->framerate}; -// video_output_file->codec_ctx->codec->pix_fmt = PIX_FMT_YUV420P; +// video_output_file->codec_ctx->codec->pix_fmt = AV_PIX_FMT_YUV420P; video_output_file->codec_ctx->gop_size = video_data_conf->framerate; // // av_opt_set(video_output_file->codec_ctx->priv_data, "preset", "ultrafast", 0); --- gpac/applications/dashcast/video_muxer.c.orig 2016-02-17 20:03:52.017158010 +0000 +++ gpac/applications/dashcast/video_muxer.c 2016-02-17 20:04:03.557099981 +0000 @@ -643,7 +643,7 @@ video_stream->codec->time_base = video_codec_ctx->time_base; - video_stream->codec->pix_fmt = PIX_FMT_YUV420P; + video_stream->codec->pix_fmt = AV_PIX_FMT_YUV420P; video_stream->codec->gop_size = video_codec_ctx->time_base.den; //video_output_file->video_data_conf->framerate; av_opt_set(video_stream->codec->priv_data, "preset", "ultrafast", 0); --- gpac/applications/dashcast/video_scaler.c.orig 2016-02-17 20:07:47.372652006 +0000 +++ gpac/applications/dashcast/video_scaler.c 2016-02-17 20:08:02.545910489 +0000 @@ -125,7 +125,7 @@ dc_consumer_init(&video_scaled_data->consumer, video_cb_size, name); video_scaled_data->num_producers = max_source; - video_scaled_data->out_pix_fmt = PIX_FMT_YUV420P; + video_scaled_data->out_pix_fmt = AV_PIX_FMT_YUV420P; GF_SAFE_ALLOC_N(video_scaled_data->vsprop, max_source, VideoScaledProp); memset(video_scaled_data->vsprop, 0, max_source * sizeof(VideoScaledProp)); @@ -198,7 +198,7 @@ video_scaled_data_node->cropped_frame->width = video_input_data->vprop[index].width - video_input_data->vprop[index].crop_x; video_scaled_data_node->cropped_frame->height = video_input_data->vprop[index].height - video_input_data->vprop[index].crop_y; #endif - if (av_picture_crop((AVPicture*)video_scaled_data_node->cropped_frame, (AVPicture*)video_data_node->vframe, PIX_FMT_YUV420P, video_input_data->vprop[index].crop_y, video_input_data->vprop[index].crop_x) < 0) { + if (av_picture_crop((AVPicture*)video_scaled_data_node->cropped_frame, (AVPicture*)video_data_node->vframe, AV_PIX_FMT_YUV420P, video_input_data->vprop[index].crop_y, video_input_data->vprop[index].crop_x) < 0) { GF_LOG(GF_LOG_ERROR, GF_LOG_DASH, ("Video scaler: error while cropping picture.\n")); return -1; } --- gpac/applications/dashcast/audio_encoder.c.orig 2016-02-17 20:14:56.797231896 +0000 +++ gpac/applications/dashcast/audio_encoder.c 2016-02-17 20:16:23.033486783 +0000 @@ -85,7 +85,7 @@ audio_output_file->frame_bytes = audio_output_file->codec_ctx->frame_size * av_get_bytes_per_sample(DC_AUDIO_SAMPLE_FORMAT) * DC_AUDIO_NUM_CHANNELS; #ifndef FF_API_AVFRAME_LAVC - avcodec_get_frame_defaults(audio_output_file->aframe); + av_frame_unref(audio_output_file->aframe); #else av_frame_unref(audio_output_file->aframe); #endif --- gpac/applications/dashcast/audio_decoder.c.orig 2016-02-17 20:15:09.517171017 +0000 +++ gpac/applications/dashcast/audio_decoder.c 2016-02-17 20:16:23.030153465 +0000 @@ -205,7 +205,7 @@ packet.size = 0; #ifndef FF_API_AVFRAME_LAVC - avcodec_get_frame_defaults(audio_input_data->aframe); + av_frame_unref(audio_input_data->aframe); #else av_frame_unref(audio_input_data->aframe); #endif @@ -240,7 +240,7 @@ /* Set audio frame to default */ #ifndef FF_API_AVFRAME_LAVC - avcodec_get_frame_defaults(audio_input_data->aframe); + av_frame_unref(audio_input_data->aframe); #else av_frame_unref(audio_input_data->aframe); #endif --- gpac/applications/dashcast/video_decoder.c.orig 2016-02-17 20:15:23.863769072 +0000 +++ gpac/applications/dashcast/video_decoder.c 2016-02-17 20:16:23.033486783 +0000 @@ -247,7 +247,7 @@ /* Flush decoder */ memset(&packet, 0, sizeof(AVPacket)); #ifndef FF_API_AVFRAME_LAVC - avcodec_get_frame_defaults(video_data_node->vframe); + av_frame_unref(video_data_node->vframe); #else av_frame_unref(video_data_node->vframe); #endif @@ -286,7 +286,7 @@ /* Set video frame to default */ #ifndef FF_API_AVFRAME_LAVC - avcodec_get_frame_defaults(video_data_node->vframe); + av_frame_unref(video_data_node->vframe); #else av_frame_unref(video_data_node->vframe); #endif --- gpac/modules/ffmpeg_in/ffmpeg_decode.c.orig 2016-02-17 20:21:45.081958730 +0000 +++ gpac/modules/ffmpeg_in/ffmpeg_decode.c 2016-02-17 20:23:37.511418275 +0000 @@ -328,7 +328,7 @@ } } #if !defined(FF_API_AVFRAME_LAVC) - *frame = avcodec_alloc_frame(); + *frame = av_frame_alloc(); #else *frame = av_frame_alloc(); #endif @@ -399,7 +399,7 @@ #if defined(USE_AVCTX3) #if !defined(FF_API_AVFRAME_LAVC) - ffd->audio_frame = avcodec_alloc_frame(); + ffd->audio_frame = av_frame_alloc(); #else ffd->audio_frame = av_frame_alloc(); #endif @@ -420,7 +420,7 @@ case AV_CODEC_ID_DVD_SUBTITLE: #if !defined(FF_API_AVFRAME_LAVC) - *frame = avcodec_alloc_frame(); + *frame = av_frame_alloc(); #else *frame = av_frame_alloc(); #endif