]> git.pld-linux.org Git - packages/gpac.git/commitdiff
- ffmpeg2 fixes from upstream svn
authorJan Rękorajski <baggins@pld-linux.org>
Wed, 28 Aug 2013 19:38:35 +0000 (21:38 +0200)
committerJan Rękorajski <baggins@pld-linux.org>
Wed, 28 Aug 2013 19:38:35 +0000 (21:38 +0200)
gpac-ffmpeg2.patch
gpac.spec

index 248f0f7fb1cd4b12d2ec394d08d71d785542edca..c5ad0ae9d4cc23282ecbd1b05be5988383542694 100644 (file)
-Index: gpac/modules/ffmpeg_in/ffmpeg_in.h
+Index: modules/ffmpeg_in/ffmpeg_in.h
 ===================================================================
---- gpac.orig/modules/ffmpeg_in/ffmpeg_in.h
-+++ gpac/modules/ffmpeg_in/ffmpeg_in.h
-@@ -96,6 +96,10 @@ void gf_av_vlog(void* avcl, int level, c
+--- modules/ffmpeg_in/ffmpeg_in.h      (revision 4282)
++++ modules/ffmpeg_in/ffmpeg_in.h      (revision 4451)
+@@ -120,7 +120,7 @@
+       /*for audio packed frames*/
+       u32 frame_start;
+-      char audio_buf[AVCODEC_MAX_AUDIO_FRAME_SIZE];
++      char audio_buf[192000];
+       Bool check_h264_isma;
+       u32 base_ES_ID;
+Index: modules/ffmpeg_in/ffmpeg_load.c
+===================================================================
+--- modules/ffmpeg_in/ffmpeg_load.c    (revision 4282)
++++ modules/ffmpeg_in/ffmpeg_load.c    (revision 4451)
+@@ -44,7 +44,7 @@
  #endif
  
  
-+#ifndef AVCODEC_MAX_AUDIO_FRAME_SIZE
-+#define AVCODEC_MAX_AUDIO_FRAME_SIZE 192000 // 1 second of 48khz 32bit audio
+-GF_EXPORT
++GPAC_MODULE_EXPORT
+ const u32 *QueryInterfaces()
+ {
+       static u32 si [] = {
+@@ -57,7 +57,7 @@
+       return si;
+ }
+-GF_EXPORT
++GPAC_MODULE_EXPORT
+ GF_BaseInterface *LoadInterface(u32 InterfaceType)
+ {
+       if (InterfaceType == GF_MEDIA_DECODER_INTERFACE) return FFDEC_Load();
+@@ -67,7 +67,7 @@
+       return NULL;
+ }
+-GF_EXPORT
++GPAC_MODULE_EXPORT
+ void ShutdownInterface(GF_BaseInterface *ifce)
+ {
+       switch (ifce->InterfaceType) {
+@@ -81,3 +81,6 @@
+ #endif
+       }
+ }
++
++
++GPAC_MODULE_STATIC_DELARATION( ffmpeg )
+Index: modules/ffmpeg_in/ffmpeg_demux.c
+===================================================================
+--- modules/ffmpeg_in/ffmpeg_demux.c   (revision 4282)
++++ modules/ffmpeg_in/ffmpeg_demux.c   (revision 4451)
+@@ -53,6 +53,18 @@
+ #define AVERROR_NOFMT AVERROR(EINVAL)
+ #endif /* AVERROR_NOFMT */
++
++#if (LIBAVFORMAT_VERSION_MAJOR >= 54) && (LIBAVFORMAT_VERSION_MINOR >= 20)
++
++#define av_find_stream_info(__c)      avformat_find_stream_info(__c, NULL)
++#ifndef FF_API_FORMAT_PARAMETERS
++#define FF_API_FORMAT_PARAMETERS      1
++#endif
++
 +#endif
 +
++
++
+ static u32 FFDemux_Run(void *par)
+ {
+       AVPacket pkt;
+@@ -76,7 +88,7 @@
+       seek_to = (s64) (AV_TIME_BASE*ffd->seek_time);
+       map_video_time = !ffd->seekable;
+-      video_init = (seek_to && ffd->video_ch) ? 0 : 1;
++      video_init = (seek_to && ffd->video_ch) ? GF_FALSE : GF_TRUE;
+       seek_audio = seek_video = 0;
+       if (ffd->seekable && (ffd->audio_st>=0)) seek_audio = (u64) (s64) (ffd->seek_time*ffd->audio_tscale.den);
+       if (ffd->seekable && (ffd->video_st>=0)) seek_video = (u64) (s64) (ffd->seek_time*ffd->video_tscale.den);
+Index: modules/ffmpeg_in/ffmpeg_decode.c
+===================================================================
+--- modules/ffmpeg_in/ffmpeg_decode.c  (revision 4282)
++++ modules/ffmpeg_in/ffmpeg_decode.c  (revision 4451)
+@@ -38,8 +38,14 @@
+ #undef USE_AVCODEC2
+ #endif
++#if (LIBAVCODEC_VERSION_MAJOR >= 55) 
++#define USE_AVCTX3
++#elif (LIBAVCODEC_VERSION_MAJOR >= 54) && (LIBAVCODEC_VERSION_MINOR >= 35)
++#define USE_AVCTX3
++#endif
++
+ /**
+  * Allocates data for FFMPEG decoding
+  * \param oldBuffer The oldBuffer (freed if not NULL)
+@@ -170,7 +176,12 @@
+               frame = &ffd->base_frame;
+       }
+       if (!(*ctx)){
++
++#ifdef USE_AVCTX3
++        *ctx = avcodec_alloc_context3(NULL);
++#else
+         *ctx = avcodec_alloc_context();
++#endif
+       }
+       /*private FFMPEG DSI*/
+@@ -318,7 +329,11 @@
+               (*ctx)->pix_fmt = ffd->raw_pix_fmt;
+               if ((*ctx)->extradata && strstr((*ctx)->extradata, "BottomUp")) ffd->flipped = 1;
+       } else {
++#ifdef USE_AVCTX3
++              if (avcodec_open2((*ctx), (*codec), NULL )<0) return GF_NON_COMPLIANT_BITSTREAM;
++#else
+               if (avcodec_open((*ctx), (*codec) )<0) return GF_NON_COMPLIANT_BITSTREAM;
++#endif
+       }
+       /*setup audio streams*/
+@@ -612,10 +627,11 @@
+               if (ffd->frame_start>inBufferLength) ffd->frame_start = 0;
+ redecode:
+-              gotpic = AVCODEC_MAX_AUDIO_FRAME_SIZE;
+ #ifdef USE_AVCODEC2
++              gotpic = 0;
+               len = avcodec_decode_audio3(ctx, (short *)ffd->audio_buf, &gotpic, &pkt);
+ #else
++              gotpic = AVCODEC_MAX_AUDIO_FRAME_SIZE;
+               len = avcodec_decode_audio2(ctx, (short *)ffd->audio_buf, &gotpic, inBuffer + ffd->frame_start, inBufferLength - ffd->frame_start);
+ #endif
+               if (len<0) { ffd->frame_start = 0; return GF_NON_COMPLIANT_BITSTREAM; }
+@@ -755,7 +771,13 @@
+                       here this means the DSI was broken, so no big deal*/
+                       avcodec_close(ctx);
+                       *codec = avcodec_find_decoder(CODEC_ID_H263);
++
++#ifdef USE_AVCTX3
++                      if (! (*codec) || (avcodec_open2(ctx, *codec, NULL)<0)) return GF_NON_COMPLIANT_BITSTREAM;
++#else
+                       if (! (*codec) || (avcodec_open(ctx, *codec)<0)) return GF_NON_COMPLIANT_BITSTREAM;
++#endif
++
+ #if USE_AVCODEC2
+                       if (avcodec_decode_video2(ctx, frame, &gotpic, &pkt) < 0) {
+ #else
+@@ -765,7 +787,11 @@
+                               avcodec_close(ctx);
+                               *codec = avcodec_find_decoder(old_codec);
+                               assert(*codec);
++#ifdef USE_AVCTX3
++                              avcodec_open2(ctx, *codec, NULL);
++#else
+                               avcodec_open(ctx, *codec);
++#endif
+                               return GF_NON_COMPLIANT_BITSTREAM;
+                       }
+               }
+@@ -979,7 +1005,7 @@
+       else if (StreamType==GF_STREAM_VISUAL) {
  
+               /*fixme - we should use some priority rather than declare ffmpeg can't handle svc*/
+-              if (esd->decoderConfig->objectTypeIndication == GPAC_OTI_VIDEO_AVC) {
++              if (esd->decoderConfig->objectTypeIndication == GPAC_OTI_VIDEO_AVC){
+                       if (esd->decoderConfig->decoderSpecificInfo && esd->decoderConfig->decoderSpecificInfo->data) {
+                               Bool is_svc = 0;
+                               u32 i, count;
+@@ -1003,7 +1029,7 @@
+                               gf_odf_avc_cfg_del(cfg);
+                               return (is_svc || esd->decoderConfig->rvc_config || esd->decoderConfig->predefined_rvc_config) ? GF_CODEC_MAYBE_SUPPORTED : GF_CODEC_SUPPORTED;
+                       }
+-                      if (esd->decoderConfig->rvc_config || esd->decoderConfig->predefined_rvc_config) return GF_CODEC_MAYBE_SUPPORTED;
++                      if (esd->decoderConfig->rvc_config || esd->decoderConfig->predefined_rvc_config || esd->has_ref_base) return GF_CODEC_MAYBE_SUPPORTED;
+                       return GF_CODEC_SUPPORTED;
+               }
  
- /*FFMPEG decoder module */
+@@ -1011,7 +1037,8 @@
+               /*MPEG-4 v1 simple profile*/
+               case GPAC_OTI_VIDEO_MPEG4_PART2: codec_id = 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; break;
++              case GPAC_OTI_VIDEO_AVC:
++                      codec_id = CODEC_ID_H264; break;
+               /*MPEG1 video*/
+               case GPAC_OTI_VIDEO_MPEG1:
+               /*MPEG2 video*/
index eb0594b142c6b556e9b43d82aadc55193fc9823c..8f48fc8d0a44e4a1cb61e03fe3aa33293bd99648 100644 (file)
--- a/gpac.spec
+++ b/gpac.spec
@@ -164,7 +164,7 @@ Wtyczka GPAC dla przeglądarek WWW zgodnych z Netscape.
 %patch6 -p1
 %patch7 -p1
 %patch8 -p1
-%patch9 -p1
+%patch9 -p0
 
 sed -i -e 's/wx-config/wx-gtk2-unicode-config/' configure
 chmod a+x configure
This page took 0.528641 seconds and 4 git commands to generate.