diff options
author | Alexis Ballier <aballier@gentoo.org> | 2015-09-16 13:47:18 +0200 |
---|---|---|
committer | Alexis Ballier <aballier@gentoo.org> | 2015-09-16 13:47:35 +0200 |
commit | a2a7ab8426921d89601e1d73746e83dcc2f511a7 (patch) | |
tree | 73ae005adc1e594baffd26f26c59148f08bcb0ae /media-video/gpac | |
parent | mail-mta/postfix: add alpha keyword (diff) | |
download | gentoo-a2a7ab8426921d89601e1d73746e83dcc2f511a7.tar.gz gentoo-a2a7ab8426921d89601e1d73746e83dcc2f511a7.tar.bz2 gentoo-a2a7ab8426921d89601e1d73746e83dcc2f511a7.zip |
media-video/gpac: fix build with ffmpeg git master.
Package-Manager: portage-2.2.20.1
Diffstat (limited to 'media-video/gpac')
-rw-r--r-- | media-video/gpac/files/gpac-0.5.2-avpixfmt.patch | 57 | ||||
-rw-r--r-- | media-video/gpac/files/gpac-0.5.2-ffmpeg29.patch | 307 | ||||
-rw-r--r-- | media-video/gpac/gpac-0.5.2.ebuild | 7 |
3 files changed, 370 insertions, 1 deletions
diff --git a/media-video/gpac/files/gpac-0.5.2-avpixfmt.patch b/media-video/gpac/files/gpac-0.5.2-avpixfmt.patch new file mode 100644 index 000000000000..0137a3ba641d --- /dev/null +++ b/media-video/gpac/files/gpac-0.5.2-avpixfmt.patch @@ -0,0 +1,57 @@ +Index: gpac-0.5.2/applications/dashcast/video_encoder.c +=================================================================== +--- gpac-0.5.2.orig/applications/dashcast/video_encoder.c ++++ gpac-0.5.2/applications/dashcast/video_encoder.c +@@ -86,7 +86,7 @@ int dc_video_encoder_open(VideoOutputFil + 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 @@ int dc_video_encoder_open(VideoOutputFil + // 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); +Index: gpac-0.5.2/applications/dashcast/video_muxer.c +=================================================================== +--- gpac-0.5.2.orig/applications/dashcast/video_muxer.c ++++ gpac-0.5.2/applications/dashcast/video_muxer.c +@@ -643,7 +643,7 @@ int dc_ffmpeg_video_muxer_open(VideoOutp + + 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); +Index: gpac-0.5.2/applications/dashcast/video_scaler.c +=================================================================== +--- gpac-0.5.2.orig/applications/dashcast/video_scaler.c ++++ gpac-0.5.2/applications/dashcast/video_scaler.c +@@ -125,7 +125,7 @@ int dc_video_scaler_data_init(VideoInput + 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 @@ int dc_video_scaler_scale(VideoInputData + 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; + } diff --git a/media-video/gpac/files/gpac-0.5.2-ffmpeg29.patch b/media-video/gpac/files/gpac-0.5.2-ffmpeg29.patch new file mode 100644 index 000000000000..1cf5487b8763 --- /dev/null +++ b/media-video/gpac/files/gpac-0.5.2-ffmpeg29.patch @@ -0,0 +1,307 @@ +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; j<ctx->height; 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) diff --git a/media-video/gpac/gpac-0.5.2.ebuild b/media-video/gpac/gpac-0.5.2.ebuild index 14c43be0a408..04a7f8e89f57 100644 --- a/media-video/gpac/gpac-0.5.2.ebuild +++ b/media-video/gpac/gpac-0.5.2.ebuild @@ -64,12 +64,17 @@ my_use() { src_prepare() { epatch "${FILESDIR}"/110_all_implicitdecls.patch \ "${FILESDIR}"/${PN}-0.5.2-static-libs.patch \ - "${FILESDIR}"/${PN}-0.5.2-gf_isom_set_pixel_aspect_ratio.patch + "${FILESDIR}"/${PN}-0.5.2-gf_isom_set_pixel_aspect_ratio.patch \ + "${FILESDIR}"/${PN}-0.5.2-avpixfmt.patch + has_version '>=media-video/ffmpeg-2.9' && epatch "${FILESDIR}"/${PN}-0.5.2-ffmpeg29.patch sed -i -e "s:\(--disable-.*\)=\*):\1):" configure || die } src_configure() { tc-export CC CXX AR RANLIB + # upstream used this internal define to check whether to use the new API + # when it is a guard for deprecating the old one... + append-cflags "-DFF_API_AVFRAME_LAVC=1" econf \ --enable-svg \ |