gstreamer/gst-libs/ext/ffmpeg/patch/function.patch
Jeremy Simon 3186414f39 Patch avcodec.h and wmadec.c to use flag1 and flag2 from context
Original commit message from CVS:
Patch avcodec.h and wmadec.c to use flag1 and flag2 from context
The asfdemux calculates the 2 values and gives them to the decoder via the pad/caps
The ffdec_wmav1 & ffdec_wmav2 put them in the ffmpeg context before they start to decode the data
2003-11-05 23:06:27 +00:00

183 lines
5.6 KiB
Diff

Index: ffmpeg/libavcodec/i386/mpegvideo_mmx.c
===================================================================
RCS file: /cvsroot/ffmpeg/ffmpeg/libavcodec/i386/mpegvideo_mmx.c,v
retrieving revision 1.25
diff -u -u -r1.25 mpegvideo_mmx.c
--- ffmpeg/libavcodec/i386/mpegvideo_mmx.c 14 May 2003 15:12:13 -0000 1.25
+++ ffmpeg/libavcodec/i386/mpegvideo_mmx.c 11 Sep 2003 19:34:45 -0000
@@ -488,6 +488,7 @@
}
}
+#if 0
#undef HAVE_MMX2
#define RENAME(a) a ## _MMX
#include "mpegvideo_mmx_template.c"
@@ -496,6 +497,7 @@
#undef RENAME
#define RENAME(a) a ## _MMX2
#include "mpegvideo_mmx_template.c"
+#endif
void MPV_common_init_mmx(MpegEncContext *s)
{
@@ -508,6 +510,7 @@
draw_edges = draw_edges_mmx;
+#if 0
if(dct_algo==FF_DCT_AUTO || dct_algo==FF_DCT_MMX){
if(mm_flags & MM_MMXEXT){
s->dct_quantize= dct_quantize_MMX2;
@@ -515,5 +518,6 @@
s->dct_quantize= dct_quantize_MMX;
}
}
+#endif
}
}
Index: ffmpeg/libavcodec/i386/mpegvideo_mmx_template.c
===================================================================
RCS file: /cvsroot/ffmpeg/ffmpeg/libavcodec/i386/mpegvideo_mmx_template.c,v
retrieving revision 1.17
diff -u -u -r1.17 mpegvideo_mmx_template.c
--- ffmpeg/libavcodec/i386/mpegvideo_mmx_template.c 13 May 2003 08:21:35 -0000 1.17
+++ ffmpeg/libavcodec/i386/mpegvideo_mmx_template.c 11 Sep 2003 19:34:47 -0000
@@ -122,7 +122,7 @@
"movd %%mm3, %%eax \n\t"
"movzbl %%al, %%eax \n\t" // last_non_zero_p1
: "+a" (last_non_zero_p1)
- : "r" (block+64), "r" (qmat), "r" (bias),
+ : "b" (block+64), "r" (qmat), "r" (bias),
"r" (inv_zigzag_direct16+64), "r" (temp_block+64)
);
// note the asm is split cuz gcc doesnt like that many operands ...
Index: ffmpeg/libavformat/avformat.h
===================================================================
RCS file: /cvsroot/ffmpeg/ffmpeg/libavformat/avformat.h,v
retrieving revision 1.55
diff -u -u -r1.55 avformat.h
--- ffmpeg/libavformat/avformat.h 4 Jul 2003 23:48:20 -0000 1.55
+++ ffmpeg/libavformat/avformat.h 11 Sep 2003 19:34:48 -0000
@@ -317,7 +317,7 @@
int amr_init(void);
/* wav.c */
-int wav_init(void);
+int avf_wav_init(void);
/* raw.c */
int raw_init(void);
@@ -326,7 +326,7 @@
int ogg_init(void);
/* dv.c */
-int dv_init(void);
+int avf_dv_init(void);
/* ffm.c */
int ffm_init(void);
Index: ffmpeg/libavformat/dv.c
===================================================================
RCS file: /cvsroot/ffmpeg/ffmpeg/libavformat/dv.c,v
retrieving revision 1.9
diff -u -u -r1.9 dv.c
--- ffmpeg/libavformat/dv.c 23 Apr 2003 02:04:40 -0000 1.9
+++ ffmpeg/libavformat/dv.c 11 Sep 2003 19:34:48 -0000
@@ -138,7 +138,7 @@
dv_write_trailer,
};
-int dv_init(void)
+int avf_dv_init(void)
{
av_register_input_format(&dv_iformat);
av_register_output_format(&dv_oformat);
Index: ffmpeg/libavformat/wav.c
===================================================================
RCS file: /cvsroot/ffmpeg/ffmpeg/libavformat/wav.c,v
retrieving revision 1.23
diff -u -u -r1.23 wav.c
--- ffmpeg/libavformat/wav.c 12 Mar 2003 18:45:50 -0000 1.23
+++ ffmpeg/libavformat/wav.c 11 Sep 2003 19:34:52 -0000
@@ -334,7 +334,7 @@
wav_write_trailer,
};
-int wav_init(void)
+int avf_wav_init(void)
{
av_register_input_format(&wav_iformat);
av_register_output_format(&wav_oformat);
--- ffmpeg/libavformat/allformats.c 2003-10-26 12:06:32.000000000 +0100
+++ ffmpeg/libavformat/allformats.c 2003-10-26 12:06:04.000000000 +0100
@@ -45,7 +45,7 @@
avienc_init();
#endif //CONFIG_ENCODERS
avidec_init();
- wav_init();
+ avf_wav_init();
swf_init();
au_init();
#ifdef CONFIG_ENCODERS
@@ -56,7 +56,7 @@
movenc_init();
jpeg_init();
#endif //CONFIG_ENCODERS
- dv_init();
+ avf_dv_init();
fourxm_init();
#ifdef CONFIG_ENCODERS
flvenc_init();
Index: ffmpeg/libavcodec/avcodec.h
===================================================================
RCS file: /cvsroot/ffmpeg/ffmpeg/libavcodec/avcodec.h,v
retrieving revision 1.237
diff -a -u -r1.237 avcodec.h
--- ffmpeg/libavcodec/avcodec.h 22 Oct 2003 18:26:38 -0000 1.237
+++ ffmpeg/libavcodec/avcodec.h 5 Nov 2003 22:54:53 -0000
@@ -1341,6 +1341,9 @@
* - decoding: unused
*/
int lmax;
+
+ /* Added for ffmpeg gstreamer plugin (ffdec_wmav1 & ffdec_wmav2) */
+ int wma_flags1, wma_flags2;
} AVCodecContext;
Index: ffmpeg/libavcodec/wmadec.c
===================================================================
RCS file: /cvsroot/ffmpeg/ffmpeg/libavcodec/wmadec.c,v
retrieving revision 1.18
diff -a -u -r1.18 wmadec.c
--- ffmpeg/libavcodec/wmadec.c 4 Jul 2003 20:32:04 -0000 1.18
+++ ffmpeg/libavcodec/wmadec.c 5 Nov 2003 22:56:01 -0000
@@ -214,9 +214,15 @@
s->version = 2;
}
- /* extract flag infos */
- flags1 = 0;
- flags2 = 0;
+ /* extract flag infos
+ * Get wma flags from context : modification for gstreamer
+ * ffmpegdec get these values from sink caps and put them in the context
+ */
+ flags1 = avctx->wma_flags1;
+ flags2 = avctx->wma_flags2;
+
+ /* The gstreamer asfdemux computed already these flags */
+ /*
extradata = avctx->extradata;
if (s->version == 1 && avctx->extradata_size >= 4) {
flags1 = extradata[0] | (extradata[1] << 8);
@@ -225,7 +231,7 @@
flags1 = extradata[0] | (extradata[1] << 8) |
(extradata[2] << 16) | (extradata[3] << 24);
flags2 = extradata[4] | (extradata[5] << 8);
- }
+ }*/
s->use_exp_vlc = flags2 & 0x0001;
s->use_bit_reservoir = flags2 & 0x0002;
s->use_variable_block_len = flags2 & 0x0004;