[libav-devel] [PATCH 3/3] x86: hpeldsp: Move avg_pixels8_x2_mmx() out of hpeldsp_rnd_template.c

2013-05-05 Thread Diego Biurrun
The function is only instantiated once, so there is no point
in keeping it in a template file.
---

Now places the function in a hpeldsp-specific file.

 libavcodec/x86/Makefile   |3 +-
 libavcodec/x86/dsputil_mmx.h  |3 ++
 libavcodec/x86/hpeldsp_init.c |3 +-
 libavcodec/x86/hpeldsp_mmx.c  |   52 +
 libavcodec/x86/hpeldsp_rnd_template.c |   22 --
 5 files changed, 58 insertions(+), 25 deletions(-)
 create mode 100644 libavcodec/x86/hpeldsp_mmx.c

diff --git a/libavcodec/x86/Makefile b/libavcodec/x86/Makefile
index f3dbb4c..da4798f 100644
--- a/libavcodec/x86/Makefile
+++ b/libavcodec/x86/Makefile
@@ -40,7 +40,8 @@ MMX-OBJS-$(CONFIG_DSPUTIL) += x86/dsputil_mmx.o   
  \
 
 MMX-OBJS-$(CONFIG_ENCODERS)+= x86/dsputilenc_mmx.o  \
   x86/motion_est.o
-MMX-OBJS-$(CONFIG_HPELDSP) += x86/fpel_mmx.o
+MMX-OBJS-$(CONFIG_HPELDSP) += x86/fpel_mmx.o\
+  x86/hpeldsp_mmx.o
 MMX-OBJS-$(CONFIG_VC1_DECODER) += x86/vc1dsp_mmx.o
 
 YASM-OBJS-$(CONFIG_AAC_DECODER)+= x86/sbrdsp.o
diff --git a/libavcodec/x86/dsputil_mmx.h b/libavcodec/x86/dsputil_mmx.h
index 98d7900..5fe7366 100644
--- a/libavcodec/x86/dsputil_mmx.h
+++ b/libavcodec/x86/dsputil_mmx.h
@@ -173,6 +173,9 @@ void ff_avg_pixels16_sse2(uint8_t *block, const uint8_t 
*pixels,
 void ff_put_pixels16_sse2(uint8_t *block, const uint8_t *pixels,
   ptrdiff_t line_size, int h);
 
+void ff_avg_pixels8_x2_mmx(uint8_t *block, const uint8_t *pixels,
+   ptrdiff_t line_size, int h);
+
 void ff_put_rv40_qpel8_mc33_mmx(uint8_t *block, uint8_t *pixels, ptrdiff_t 
stride);
 void ff_put_rv40_qpel16_mc33_mmx(uint8_t *block, uint8_t *pixels, ptrdiff_t 
stride);
 void ff_avg_rv40_qpel8_mc33_mmx(uint8_t *block, uint8_t *pixels, ptrdiff_t 
stride);
diff --git a/libavcodec/x86/hpeldsp_init.c b/libavcodec/x86/hpeldsp_init.c
index e79f343..bcfa715 100644
--- a/libavcodec/x86/hpeldsp_init.c
+++ b/libavcodec/x86/hpeldsp_init.c
@@ -75,6 +75,7 @@ void ff_avg_pixels8_xy2_3dnow(uint8_t *block, const uint8_t 
*pixels,
   ptrdiff_t line_size, int h);
 
 #define avg_pixels8_mmx ff_avg_pixels8_mmx
+#define avg_pixels8_x2_mmx  ff_avg_pixels8_x2_mmx
 #define avg_pixels16_mmxff_avg_pixels16_mmx
 #define put_pixels8_mmx ff_put_pixels8_mmx
 #define put_pixels16_mmxff_put_pixels16_mmx
@@ -86,7 +87,6 @@ void ff_avg_pixels8_xy2_3dnow(uint8_t *block, const uint8_t 
*pixels,
 
 /***/
 /* MMX no rounding */
-#define NO_RND 1
 #define DEF(x, y) x ## _no_rnd_ ## y ## _mmx
 #define SET_RND  MOVQ_WONE
 #define PAVGBP(a, b, c, d, e, f)PAVGBP_MMX_NO_RND(a, b, c, d, e, f)
@@ -99,7 +99,6 @@ void ff_avg_pixels8_xy2_3dnow(uint8_t *block, const uint8_t 
*pixels,
 #undef SET_RND
 #undef PAVGBP
 #undef PAVGB
-#undef NO_RND
 /***/
 /* MMX rounding */
 
diff --git a/libavcodec/x86/hpeldsp_mmx.c b/libavcodec/x86/hpeldsp_mmx.c
new file mode 100644
index 000..36d4dcc
--- /dev/null
+++ b/libavcodec/x86/hpeldsp_mmx.c
@@ -0,0 +1,52 @@
+/*
+ * MMX-optimized avg/put pixel routines
+ *
+ * Copyright (c) 2001 Fabrice Bellard
+ *
+ * This file is part of Libav.
+ *
+ * Libav is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU Lesser General Public
+ * License as published by the Free Software Foundation; either
+ * version 2.1 of the License, or (at your option) any later version.
+ *
+ * Libav is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+ * Lesser General Public License for more details.
+ *
+ * You should have received a copy of the GNU Lesser General Public
+ * License along with Libav; if not, write to the Free Software
+ * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
+ */
+
+#include 
+#include 
+
+#include "config.h"
+#include "dsputil_mmx.h"
+
+#if HAVE_MMX_INLINE
+
+void ff_avg_pixels8_x2_mmx(uint8_t *block, const uint8_t *pixels,
+   ptrdiff_t line_size, int h)
+{
+MOVQ_BFE(mm6);
+JUMPALIGN();
+do {
+__asm__ volatile(
+"movq  %1, %%mm0\n\t"
+"movq  1%1, %%mm1   \n\t"
+"movq  %0, %%mm3\n\t"
+PAVGB_MMX(%%mm0, %%mm1, %%mm2, %%mm6)
+PAVGB_MMX(%%mm3, %%mm2, %%mm0, %%mm6)
+"movq  %%mm0, %0\n\t"
+:"+m"(*block)
+:"m"(*pixels)
+:"memory");
+pixels += line_size;
+block += line_size;
+} while (--h);
+}
+
+#endif /* HAVE_MMX_INLINE */
diff --git a/libavcodec/x86/hpeldsp_rnd_te

[libav-devel] [PATCH 1/3] x86: More specific ifdefs for dsputil/hpeldsp init functions

2013-05-05 Thread Diego Biurrun
---
 libavcodec/x86/dsputil_mmx.c  |   16 
 libavcodec/x86/hpeldsp_init.c |   16 
 2 files changed, 16 insertions(+), 16 deletions(-)

diff --git a/libavcodec/x86/dsputil_mmx.c b/libavcodec/x86/dsputil_mmx.c
index 6e2686d..679f272 100644
--- a/libavcodec/x86/dsputil_mmx.c
+++ b/libavcodec/x86/dsputil_mmx.c
@@ -1119,7 +1119,7 @@ void ff_vector_clip_int32_sse4(int32_t *dst, const 
int32_t *src,
 static av_cold void dsputil_init_mmx(DSPContext *c, AVCodecContext *avctx,
  int mm_flags)
 {
-#if HAVE_INLINE_ASM
+#if HAVE_MMX_INLINE
 const int high_bit_depth = avctx->bits_per_raw_sample > 8;
 
 c->put_pixels_clamped= ff_put_pixels_clamped_mmx;
@@ -1150,22 +1150,22 @@ static av_cold void dsputil_init_mmx(DSPContext *c, 
AVCodecContext *avctx,
 c->gmc = gmc_mmx;
 
 c->add_bytes = add_bytes_mmx;
-#endif /* HAVE_INLINE_ASM */
+#endif /* HAVE_MMX_INLINE */
 
-#if HAVE_YASM
+#if HAVE_MMX_EXTERNAL
 if (CONFIG_H263_DECODER || CONFIG_H263_ENCODER) {
 c->h263_v_loop_filter = ff_h263_v_loop_filter_mmx;
 c->h263_h_loop_filter = ff_h263_h_loop_filter_mmx;
 }
 
 c->vector_clip_int32 = ff_vector_clip_int32_mmx;
-#endif /* HAVE_YASM */
+#endif /* HAVE_MMX_EXTERNAL */
 }
 
 static av_cold void dsputil_init_mmxext(DSPContext *c, AVCodecContext *avctx,
 int mm_flags)
 {
-#if HAVE_INLINE_ASM
+#if HAVE_MMXEXT_INLINE
 const int high_bit_depth = avctx->bits_per_raw_sample > 8;
 
 if (!high_bit_depth && avctx->idct_algo == FF_IDCT_XVIDMMX) {
@@ -1173,7 +1173,7 @@ static av_cold void dsputil_init_mmxext(DSPContext *c, 
AVCodecContext *avctx,
 c->idct_add = ff_idct_xvid_mmxext_add;
 c->idct = ff_idct_xvid_mmxext;
 }
-#endif /* HAVE_INLINE_ASM */
+#endif /* HAVE_MMXEXT_INLINE */
 
 #if HAVE_MMXEXT_EXTERNAL
 SET_QPEL_FUNCS(avg_qpel,0, 16, mmxext, );
@@ -1202,7 +1202,7 @@ static av_cold void dsputil_init_mmxext(DSPContext *c, 
AVCodecContext *avctx,
 static av_cold void dsputil_init_sse(DSPContext *c, AVCodecContext *avctx,
  int mm_flags)
 {
-#if HAVE_INLINE_ASM
+#if HAVE_SSE_INLINE
 const int high_bit_depth = avctx->bits_per_raw_sample > 8;
 
 if (!high_bit_depth) {
@@ -1214,7 +1214,7 @@ static av_cold void dsputil_init_sse(DSPContext *c, 
AVCodecContext *avctx,
 }
 
 c->vector_clipf = vector_clipf_sse;
-#endif /* HAVE_INLINE_ASM */
+#endif /* HAVE_SSE_INLINE */
 }
 
 static av_cold void dsputil_init_sse2(DSPContext *c, AVCodecContext *avctx,
diff --git a/libavcodec/x86/hpeldsp_init.c b/libavcodec/x86/hpeldsp_init.c
index d573d05..e79f343 100644
--- a/libavcodec/x86/hpeldsp_init.c
+++ b/libavcodec/x86/hpeldsp_init.c
@@ -150,7 +150,7 @@ void ff_avg_pixels8_xy2_3dnow(uint8_t *block, const uint8_t 
*pixels,
 
 static void hpeldsp_init_mmx(HpelDSPContext *c, int flags, int mm_flags)
 {
-#if HAVE_INLINE_ASM
+#if HAVE_MMX_INLINE
 SET_HPEL_FUNCS(put,[0], 16, mmx);
 SET_HPEL_FUNCS(put_no_rnd, [0], 16, mmx);
 SET_HPEL_FUNCS(avg,[0], 16, mmx);
@@ -158,12 +158,12 @@ static void hpeldsp_init_mmx(HpelDSPContext *c, int 
flags, int mm_flags)
 SET_HPEL_FUNCS(put,[1],  8, mmx);
 SET_HPEL_FUNCS(put_no_rnd, [1],  8, mmx);
 SET_HPEL_FUNCS(avg,[1],  8, mmx);
-#endif /* HAVE_INLINE_ASM */
+#endif /* HAVE_MMX_INLINE */
 }
 
 static void hpeldsp_init_mmxext(HpelDSPContext *c, int flags, int mm_flags)
 {
-#if HAVE_YASM
+#if HAVE_MMXEXT_EXTERNAL
 c->put_pixels_tab[0][1] = ff_put_pixels16_x2_mmxext;
 c->put_pixels_tab[0][2] = put_pixels16_y2_mmxext;
 
@@ -192,12 +192,12 @@ static void hpeldsp_init_mmxext(HpelDSPContext *c, int 
flags, int mm_flags)
 c->put_no_rnd_pixels_tab[1][1] = ff_put_no_rnd_pixels8_x2_exact_mmxext;
 c->put_no_rnd_pixels_tab[1][2] = ff_put_no_rnd_pixels8_y2_exact_mmxext;
 }
-#endif /* HAVE_YASM */
+#endif /* HAVE_MMXEXT_EXTERNAL */
 }
 
 static void hpeldsp_init_3dnow(HpelDSPContext *c, int flags, int mm_flags)
 {
-#if HAVE_YASM
+#if HAVE_AMD3DNOW_EXTERNAL
 c->put_pixels_tab[0][1] = ff_put_pixels16_x2_3dnow;
 c->put_pixels_tab[0][2] = put_pixels16_y2_3dnow;
 
@@ -226,19 +226,19 @@ static void hpeldsp_init_3dnow(HpelDSPContext *c, int 
flags, int mm_flags)
 c->put_no_rnd_pixels_tab[1][1] = ff_put_no_rnd_pixels8_x2_exact_3dnow;
 c->put_no_rnd_pixels_tab[1][2] = ff_put_no_rnd_pixels8_y2_exact_3dnow;
 }
-#endif /* HAVE_YASM */
+#endif /* HAVE_AMD3DNOW_EXTERNAL */
 }
 
 static void hpeldsp_init_sse2(HpelDSPContext *c, int flags, int mm_flags)
 {
-#if HAVE_YASM
+#if HAVE_SSE2_EXTERNAL
 if (!(mm_flags & AV_CPU_FLAG_SSE2SLOW)) {
 // these functions are slower than mmx on AMD, but faster on Intel
 c->put_pixels_tab[0][0]= ff_put_pixels16_sse2;
 c->put_no_rnd_pixels_tab[0][0] = ff_put_pixels16_sse2;
 c->avg_pixels_tab[0][0]= ff_avg_pixel

[libav-devel] [PATCH 2/3] x86: hpeldsp: Only compile MMX hpeldsp code if MMX is enabled

2013-05-05 Thread Diego Biurrun
---
 libavcodec/x86/Makefile |4 ++--
 1 file changed, 2 insertions(+), 2 deletions(-)

diff --git a/libavcodec/x86/Makefile b/libavcodec/x86/Makefile
index 30b8eff..f3dbb4c 100644
--- a/libavcodec/x86/Makefile
+++ b/libavcodec/x86/Makefile
@@ -10,8 +10,7 @@ OBJS-$(CONFIG_H264CHROMA)  += 
x86/h264chroma_init.o
 OBJS-$(CONFIG_H264DSP) += x86/h264dsp_init.o
 OBJS-$(CONFIG_H264PRED)+= x86/h264_intrapred_init.o
 OBJS-$(CONFIG_H264QPEL)+= x86/h264_qpel.o
-OBJS-$(CONFIG_HPELDSP) += x86/fpel_mmx.o\
-  x86/hpeldsp_init.o
+OBJS-$(CONFIG_HPELDSP) += x86/hpeldsp_init.o
 OBJS-$(CONFIG_LPC) += x86/lpc.o
 OBJS-$(CONFIG_MLP_DECODER) += x86/mlpdsp.o
 OBJS-$(CONFIG_MPEGAUDIODSP)+= x86/mpegaudiodsp.o
@@ -41,6 +40,7 @@ MMX-OBJS-$(CONFIG_DSPUTIL) += x86/dsputil_mmx.o   
  \
 
 MMX-OBJS-$(CONFIG_ENCODERS)+= x86/dsputilenc_mmx.o  \
   x86/motion_est.o
+MMX-OBJS-$(CONFIG_HPELDSP) += x86/fpel_mmx.o
 MMX-OBJS-$(CONFIG_VC1_DECODER) += x86/vc1dsp_mmx.o
 
 YASM-OBJS-$(CONFIG_AAC_DECODER)+= x86/sbrdsp.o
-- 
1.7.9.5

___
libav-devel mailing list
libav-devel@libav.org
https://lists.libav.org/mailman/listinfo/libav-devel


Re: [libav-devel] [PATCH] x86: hpeldsp: Move avg_pixels8_x2_mmx() out of hpeldsp_rnd_template.c

2013-05-05 Thread Martin Storsjö

On Sun, 5 May 2013, Diego Biurrun wrote:


The function is only instantiated once, so there is no point
in keeping it in a template file.
---
libavcodec/x86/dsputil_mmx.h  |3 +++
libavcodec/x86/fpel_mmx.c |   21 +
libavcodec/x86/hpeldsp_init.c |3 +--
libavcodec/x86/hpeldsp_rnd_template.c |   22 --
4 files changed, 25 insertions(+), 24 deletions(-)


Doesn't this make the function be built and included anywhere where 
fpel_mmx is included (e.g. in a build with dsputil enabled but not 
hpeldsp)? Wouldn't it make more sense to keep it in a hpeldsp file, if 
that's the only place where it's used?


// Martin
___
libav-devel mailing list
libav-devel@libav.org
https://lists.libav.org/mailman/listinfo/libav-devel


Re: [libav-devel] [PATCH 2/2] bgmc: Do not mark ff_bgmc_decode_init() as av_cold

2013-05-05 Thread Martin Storsjö

On Sun, 5 May 2013, Diego Biurrun wrote:


The function is possibly called once per block.
---
libavcodec/bgmc.c |4 ++--
1 file changed, 2 insertions(+), 2 deletions(-)

diff --git a/libavcodec/bgmc.c b/libavcodec/bgmc.c
index c0ebcac..c7f732e 100644
--- a/libavcodec/bgmc.c
+++ b/libavcodec/bgmc.c
@@ -485,8 +485,8 @@ av_cold void ff_bgmc_end(uint8_t **cf_lut, int 
**cf_lut_status)


/** Initialize decoding and reads the first value */
-av_cold void ff_bgmc_decode_init(GetBitContext *gb, unsigned int *h,
- unsigned int *l, unsigned int *v)
+void ff_bgmc_decode_init(GetBitContext *gb, unsigned int *h,
+ unsigned int *l, unsigned int *v)
{
*h = TOP_VALUE;
*l = 0;
--
1.7.9.5


Ok

// Martin
___
libav-devel mailing list
libav-devel@libav.org
https://lists.libav.org/mailman/listinfo/libav-devel


Re: [libav-devel] [PATCH 1/2] avcodec: Add av_cold attributes to end functions missing them

2013-05-05 Thread Martin Storsjö

On Sun, 5 May 2013, Diego Biurrun wrote:


---

Drops two inappropriate av_cold markings noticed by Martin.

libavcodec/avfft.c   |8 
libavcodec/bgmc.c|2 +-
libavcodec/dnxhdenc.c|2 +-
libavcodec/libxvid_rc.c  |3 ++-
libavcodec/mpeg12dec.c   |3 ++-
libavcodec/roqvideoenc.c |2 +-
libavcodec/svq3.c|4 +++-
7 files changed, 14 insertions(+), 10 deletions(-)

diff --git a/libavcodec/avfft.c b/libavcodec/avfft.c
index 8ef5797..513f57e 100644
--- a/libavcodec/avfft.c
+++ b/libavcodec/avfft.c
@@ -45,7 +45,7 @@ void av_fft_calc(FFTContext *s, FFTComplex *z)
s->fft_calc(s, z);
}

-void av_fft_end(FFTContext *s)
+av_cold void av_fft_end(FFTContext *s)
{
if (s) {
ff_fft_end(s);
@@ -80,7 +80,7 @@ void av_mdct_calc(FFTContext *s, FFTSample *output, const 
FFTSample *input)
s->mdct_calc(s, output, input);
}

-void av_mdct_end(FFTContext *s)
+av_cold void av_mdct_end(FFTContext *s)
{
if (s) {
ff_mdct_end(s);
@@ -107,7 +107,7 @@ void av_rdft_calc(RDFTContext *s, FFTSample *data)
s->rdft_calc(s, data);
}

-void av_rdft_end(RDFTContext *s)
+av_cold void av_rdft_end(RDFTContext *s)
{
if (s) {
ff_rdft_end(s);
@@ -134,7 +134,7 @@ void av_dct_calc(DCTContext *s, FFTSample *data)
s->dct_calc(s, data);
}

-void av_dct_end(DCTContext *s)
+av_cold void av_dct_end(DCTContext *s)
{
if (s) {
ff_dct_end(s);
diff --git a/libavcodec/bgmc.c b/libavcodec/bgmc.c
index b8f4bee..c0ebcac 100644
--- a/libavcodec/bgmc.c
+++ b/libavcodec/bgmc.c
@@ -477,7 +477,7 @@ av_cold int ff_bgmc_init(AVCodecContext *avctx,


/** Release the lookup table arrays */
-void ff_bgmc_end(uint8_t **cf_lut, int **cf_lut_status)
+av_cold void ff_bgmc_end(uint8_t **cf_lut, int **cf_lut_status)
{
av_freep(cf_lut);
av_freep(cf_lut_status);
diff --git a/libavcodec/dnxhdenc.c b/libavcodec/dnxhdenc.c
index 5b59e64..920fa45 100644
--- a/libavcodec/dnxhdenc.c
+++ b/libavcodec/dnxhdenc.c
@@ -990,7 +990,7 @@ static int dnxhd_encode_picture(AVCodecContext *avctx, 
AVPacket *pkt,
return 0;
}

-static int dnxhd_encode_end(AVCodecContext *avctx)
+static av_cold int dnxhd_encode_end(AVCodecContext *avctx)
{
DNXHDEncContext *ctx = avctx->priv_data;
int max_level = 1<<(ctx->cid_table->bit_depth+2);
diff --git a/libavcodec/libxvid_rc.c b/libavcodec/libxvid_rc.c
index 9c45804..9084d33 100644
--- a/libavcodec/libxvid_rc.c
+++ b/libavcodec/libxvid_rc.c
@@ -170,7 +170,8 @@ float ff_xvid_rate_estimate_qscale(MpegEncContext *s, int 
dry_run){
return xvid_plg_data.quant * FF_QP2LAMBDA;
}

-void ff_xvid_rate_control_uninit(MpegEncContext *s){
+av_cold void ff_xvid_rate_control_uninit(MpegEncContext *s)
+{
xvid_plg_destroy_t xvid_plg_destroy;

xvid_plugin_2pass2(s->rc_context.non_lavc_opaque, XVID_PLG_DESTROY, 
&xvid_plg_destroy, NULL);
diff --git a/libavcodec/mpeg12dec.c b/libavcodec/mpeg12dec.c
index 3bf20c6..16c8523 100644
--- a/libavcodec/mpeg12dec.c
+++ b/libavcodec/mpeg12dec.c
@@ -26,6 +26,7 @@
 */

//#define DEBUG
+#include "libavutil/attributes.h"
#include "libavutil/internal.h"
#include "internal.h"
#include "avcodec.h"
@@ -2355,7 +2356,7 @@ static void flush(AVCodecContext *avctx)
ff_mpeg_flush(avctx);
}

-static int mpeg_decode_end(AVCodecContext *avctx)
+static av_cold int mpeg_decode_end(AVCodecContext *avctx)
{
Mpeg1Context *s = avctx->priv_data;

diff --git a/libavcodec/roqvideoenc.c b/libavcodec/roqvideoenc.c
index db95282..650db67 100644
--- a/libavcodec/roqvideoenc.c
+++ b/libavcodec/roqvideoenc.c
@@ -937,7 +937,7 @@ static void roq_encode_video(RoqContext *enc)
enc->framesSinceKeyframe++;
}

-static int roq_encode_end(AVCodecContext *avctx)
+static av_cold int roq_encode_end(AVCodecContext *avctx)
{
RoqContext *enc = avctx->priv_data;

diff --git a/libavcodec/svq3.c b/libavcodec/svq3.c
index 1ecc1b2..6455821 100644
--- a/libavcodec/svq3.c
+++ b/libavcodec/svq3.c
@@ -39,6 +39,8 @@
 * correctly decodes this file:
 *  http://samples.libav.org/V-codecs/SVQ3/Vertical400kbit.sorenson3.mov
 */
+
+#include "libavutil/attributes.h"
#include "internal.h"
#include "avcodec.h"
#include "mpegvideo.h"
@@ -1281,7 +1283,7 @@ static int svq3_decode_frame(AVCodecContext *avctx, void 
*data,
return buf_size;
}

-static int svq3_decode_end(AVCodecContext *avctx)
+static av_cold int svq3_decode_end(AVCodecContext *avctx)
{
SVQ3Context *s = avctx->priv_data;
H264Context *h = &s->h;
--
1.7.9.5


Ok

// Martin
___
libav-devel mailing list
libav-devel@libav.org
https://lists.libav.org/mailman/listinfo/libav-devel


[libav-devel] [PATCH] x86: hpeldsp: Move avg_pixels8_x2_mmx() out of hpeldsp_rnd_template.c

2013-05-05 Thread Diego Biurrun
The function is only instantiated once, so there is no point
in keeping it in a template file.
---
 libavcodec/x86/dsputil_mmx.h  |3 +++
 libavcodec/x86/fpel_mmx.c |   21 +
 libavcodec/x86/hpeldsp_init.c |3 +--
 libavcodec/x86/hpeldsp_rnd_template.c |   22 --
 4 files changed, 25 insertions(+), 24 deletions(-)

diff --git a/libavcodec/x86/dsputil_mmx.h b/libavcodec/x86/dsputil_mmx.h
index 98d7900..5fe7366 100644
--- a/libavcodec/x86/dsputil_mmx.h
+++ b/libavcodec/x86/dsputil_mmx.h
@@ -173,6 +173,9 @@ void ff_avg_pixels16_sse2(uint8_t *block, const uint8_t 
*pixels,
 void ff_put_pixels16_sse2(uint8_t *block, const uint8_t *pixels,
   ptrdiff_t line_size, int h);
 
+void ff_avg_pixels8_x2_mmx(uint8_t *block, const uint8_t *pixels,
+   ptrdiff_t line_size, int h);
+
 void ff_put_rv40_qpel8_mc33_mmx(uint8_t *block, uint8_t *pixels, ptrdiff_t 
stride);
 void ff_put_rv40_qpel16_mc33_mmx(uint8_t *block, uint8_t *pixels, ptrdiff_t 
stride);
 void ff_avg_rv40_qpel8_mc33_mmx(uint8_t *block, uint8_t *pixels, ptrdiff_t 
stride);
diff --git a/libavcodec/x86/fpel_mmx.c b/libavcodec/x86/fpel_mmx.c
index 1df5a94..c83b1d6 100644
--- a/libavcodec/x86/fpel_mmx.c
+++ b/libavcodec/x86/fpel_mmx.c
@@ -50,6 +50,27 @@ void ff_avg_pixels8_mmx(uint8_t *block, const uint8_t 
*pixels,
 while (--h);
 }
 
+void ff_avg_pixels8_x2_mmx(uint8_t *block, const uint8_t *pixels,
+   ptrdiff_t line_size, int h)
+{
+MOVQ_BFE(mm6);
+JUMPALIGN();
+do {
+__asm__ volatile(
+"movq  %1, %%mm0\n\t"
+"movq  1%1, %%mm1   \n\t"
+"movq  %0, %%mm3\n\t"
+PAVGB_MMX(%%mm0, %%mm1, %%mm2, %%mm6)
+PAVGB_MMX(%%mm3, %%mm2, %%mm0, %%mm6)
+"movq  %%mm0, %0\n\t"
+:"+m"(*block)
+:"m"(*pixels)
+:"memory");
+pixels += line_size;
+block += line_size;
+} while (--h);
+}
+
 void ff_avg_pixels16_mmx(uint8_t *block, const uint8_t *pixels,
  ptrdiff_t line_size, int h)
 {
diff --git a/libavcodec/x86/hpeldsp_init.c b/libavcodec/x86/hpeldsp_init.c
index d573d05..60c7942 100644
--- a/libavcodec/x86/hpeldsp_init.c
+++ b/libavcodec/x86/hpeldsp_init.c
@@ -75,6 +75,7 @@ void ff_avg_pixels8_xy2_3dnow(uint8_t *block, const uint8_t 
*pixels,
   ptrdiff_t line_size, int h);
 
 #define avg_pixels8_mmx ff_avg_pixels8_mmx
+#define avg_pixels8_x2_mmx  ff_avg_pixels8_x2_mmx
 #define avg_pixels16_mmxff_avg_pixels16_mmx
 #define put_pixels8_mmx ff_put_pixels8_mmx
 #define put_pixels16_mmxff_put_pixels16_mmx
@@ -86,7 +87,6 @@ void ff_avg_pixels8_xy2_3dnow(uint8_t *block, const uint8_t 
*pixels,
 
 /***/
 /* MMX no rounding */
-#define NO_RND 1
 #define DEF(x, y) x ## _no_rnd_ ## y ## _mmx
 #define SET_RND  MOVQ_WONE
 #define PAVGBP(a, b, c, d, e, f)PAVGBP_MMX_NO_RND(a, b, c, d, e, f)
@@ -99,7 +99,6 @@ void ff_avg_pixels8_xy2_3dnow(uint8_t *block, const uint8_t 
*pixels,
 #undef SET_RND
 #undef PAVGBP
 #undef PAVGB
-#undef NO_RND
 /***/
 /* MMX rounding */
 
diff --git a/libavcodec/x86/hpeldsp_rnd_template.c 
b/libavcodec/x86/hpeldsp_rnd_template.c
index 458311c..4976caa 100644
--- a/libavcodec/x86/hpeldsp_rnd_template.c
+++ b/libavcodec/x86/hpeldsp_rnd_template.c
@@ -134,28 +134,6 @@ static void DEF(put, pixels8_y2)(uint8_t *block, const 
uint8_t *pixels, ptrdiff_
 :REG_a, "memory");
 }
 
-#ifndef NO_RND
-static void DEF(avg, pixels8_x2)(uint8_t *block, const uint8_t *pixels, 
ptrdiff_t line_size, int h)
-{
-MOVQ_BFE(mm6);
-JUMPALIGN();
-do {
-__asm__ volatile(
-"movq  %1, %%mm0\n\t"
-"movq  1%1, %%mm1   \n\t"
-"movq  %0, %%mm3\n\t"
-PAVGB(%%mm0, %%mm1, %%mm2, %%mm6)
-OP_AVG(%%mm3, %%mm2, %%mm0, %%mm6)
-"movq  %%mm0, %0\n\t"
-:"+m"(*block)
-:"m"(*pixels)
-:"memory");
-pixels += line_size;
-block += line_size;
-} while (--h);
-}
-#endif // NO_RND
-
 static void DEF(avg, pixels16_x2)(uint8_t *block, const uint8_t *pixels, 
ptrdiff_t line_size, int h)
 {
 MOVQ_BFE(mm6);
-- 
1.7.9.5

___
libav-devel mailing list
libav-devel@libav.org
https://lists.libav.org/mailman/listinfo/libav-devel


[libav-devel] [PATCH 1/2] avcodec: Add av_cold attributes to end functions missing them

2013-05-05 Thread Diego Biurrun
---

Drops two inappropriate av_cold markings noticed by Martin.

 libavcodec/avfft.c   |8 
 libavcodec/bgmc.c|2 +-
 libavcodec/dnxhdenc.c|2 +-
 libavcodec/libxvid_rc.c  |3 ++-
 libavcodec/mpeg12dec.c   |3 ++-
 libavcodec/roqvideoenc.c |2 +-
 libavcodec/svq3.c|4 +++-
 7 files changed, 14 insertions(+), 10 deletions(-)

diff --git a/libavcodec/avfft.c b/libavcodec/avfft.c
index 8ef5797..513f57e 100644
--- a/libavcodec/avfft.c
+++ b/libavcodec/avfft.c
@@ -45,7 +45,7 @@ void av_fft_calc(FFTContext *s, FFTComplex *z)
 s->fft_calc(s, z);
 }
 
-void av_fft_end(FFTContext *s)
+av_cold void av_fft_end(FFTContext *s)
 {
 if (s) {
 ff_fft_end(s);
@@ -80,7 +80,7 @@ void av_mdct_calc(FFTContext *s, FFTSample *output, const 
FFTSample *input)
 s->mdct_calc(s, output, input);
 }
 
-void av_mdct_end(FFTContext *s)
+av_cold void av_mdct_end(FFTContext *s)
 {
 if (s) {
 ff_mdct_end(s);
@@ -107,7 +107,7 @@ void av_rdft_calc(RDFTContext *s, FFTSample *data)
 s->rdft_calc(s, data);
 }
 
-void av_rdft_end(RDFTContext *s)
+av_cold void av_rdft_end(RDFTContext *s)
 {
 if (s) {
 ff_rdft_end(s);
@@ -134,7 +134,7 @@ void av_dct_calc(DCTContext *s, FFTSample *data)
 s->dct_calc(s, data);
 }
 
-void av_dct_end(DCTContext *s)
+av_cold void av_dct_end(DCTContext *s)
 {
 if (s) {
 ff_dct_end(s);
diff --git a/libavcodec/bgmc.c b/libavcodec/bgmc.c
index b8f4bee..c0ebcac 100644
--- a/libavcodec/bgmc.c
+++ b/libavcodec/bgmc.c
@@ -477,7 +477,7 @@ av_cold int ff_bgmc_init(AVCodecContext *avctx,
 
 
 /** Release the lookup table arrays */
-void ff_bgmc_end(uint8_t **cf_lut, int **cf_lut_status)
+av_cold void ff_bgmc_end(uint8_t **cf_lut, int **cf_lut_status)
 {
 av_freep(cf_lut);
 av_freep(cf_lut_status);
diff --git a/libavcodec/dnxhdenc.c b/libavcodec/dnxhdenc.c
index 5b59e64..920fa45 100644
--- a/libavcodec/dnxhdenc.c
+++ b/libavcodec/dnxhdenc.c
@@ -990,7 +990,7 @@ static int dnxhd_encode_picture(AVCodecContext *avctx, 
AVPacket *pkt,
 return 0;
 }
 
-static int dnxhd_encode_end(AVCodecContext *avctx)
+static av_cold int dnxhd_encode_end(AVCodecContext *avctx)
 {
 DNXHDEncContext *ctx = avctx->priv_data;
 int max_level = 1<<(ctx->cid_table->bit_depth+2);
diff --git a/libavcodec/libxvid_rc.c b/libavcodec/libxvid_rc.c
index 9c45804..9084d33 100644
--- a/libavcodec/libxvid_rc.c
+++ b/libavcodec/libxvid_rc.c
@@ -170,7 +170,8 @@ float ff_xvid_rate_estimate_qscale(MpegEncContext *s, int 
dry_run){
 return xvid_plg_data.quant * FF_QP2LAMBDA;
 }
 
-void ff_xvid_rate_control_uninit(MpegEncContext *s){
+av_cold void ff_xvid_rate_control_uninit(MpegEncContext *s)
+{
 xvid_plg_destroy_t xvid_plg_destroy;
 
 xvid_plugin_2pass2(s->rc_context.non_lavc_opaque, XVID_PLG_DESTROY, 
&xvid_plg_destroy, NULL);
diff --git a/libavcodec/mpeg12dec.c b/libavcodec/mpeg12dec.c
index 3bf20c6..16c8523 100644
--- a/libavcodec/mpeg12dec.c
+++ b/libavcodec/mpeg12dec.c
@@ -26,6 +26,7 @@
  */
 
 //#define DEBUG
+#include "libavutil/attributes.h"
 #include "libavutil/internal.h"
 #include "internal.h"
 #include "avcodec.h"
@@ -2355,7 +2356,7 @@ static void flush(AVCodecContext *avctx)
 ff_mpeg_flush(avctx);
 }
 
-static int mpeg_decode_end(AVCodecContext *avctx)
+static av_cold int mpeg_decode_end(AVCodecContext *avctx)
 {
 Mpeg1Context *s = avctx->priv_data;
 
diff --git a/libavcodec/roqvideoenc.c b/libavcodec/roqvideoenc.c
index db95282..650db67 100644
--- a/libavcodec/roqvideoenc.c
+++ b/libavcodec/roqvideoenc.c
@@ -937,7 +937,7 @@ static void roq_encode_video(RoqContext *enc)
 enc->framesSinceKeyframe++;
 }
 
-static int roq_encode_end(AVCodecContext *avctx)
+static av_cold int roq_encode_end(AVCodecContext *avctx)
 {
 RoqContext *enc = avctx->priv_data;
 
diff --git a/libavcodec/svq3.c b/libavcodec/svq3.c
index 1ecc1b2..6455821 100644
--- a/libavcodec/svq3.c
+++ b/libavcodec/svq3.c
@@ -39,6 +39,8 @@
  * correctly decodes this file:
  *  http://samples.libav.org/V-codecs/SVQ3/Vertical400kbit.sorenson3.mov
  */
+
+#include "libavutil/attributes.h"
 #include "internal.h"
 #include "avcodec.h"
 #include "mpegvideo.h"
@@ -1281,7 +1283,7 @@ static int svq3_decode_frame(AVCodecContext *avctx, void 
*data,
 return buf_size;
 }
 
-static int svq3_decode_end(AVCodecContext *avctx)
+static av_cold int svq3_decode_end(AVCodecContext *avctx)
 {
 SVQ3Context *s = avctx->priv_data;
 H264Context *h = &s->h;
-- 
1.7.9.5

___
libav-devel mailing list
libav-devel@libav.org
https://lists.libav.org/mailman/listinfo/libav-devel


[libav-devel] [PATCH 2/2] bgmc: Do not mark ff_bgmc_decode_init() as av_cold

2013-05-05 Thread Diego Biurrun
The function is possibly called once per block.
---
 libavcodec/bgmc.c |4 ++--
 1 file changed, 2 insertions(+), 2 deletions(-)

diff --git a/libavcodec/bgmc.c b/libavcodec/bgmc.c
index c0ebcac..c7f732e 100644
--- a/libavcodec/bgmc.c
+++ b/libavcodec/bgmc.c
@@ -485,8 +485,8 @@ av_cold void ff_bgmc_end(uint8_t **cf_lut, int 
**cf_lut_status)
 
 
 /** Initialize decoding and reads the first value */
-av_cold void ff_bgmc_decode_init(GetBitContext *gb, unsigned int *h,
- unsigned int *l, unsigned int *v)
+void ff_bgmc_decode_init(GetBitContext *gb, unsigned int *h,
+ unsigned int *l, unsigned int *v)
 {
 *h = TOP_VALUE;
 *l = 0;
-- 
1.7.9.5

___
libav-devel mailing list
libav-devel@libav.org
https://lists.libav.org/mailman/listinfo/libav-devel


Re: [libav-devel] [PATCH] Add av_cold attributes to end functions missing them

2013-05-05 Thread Martin Storsjö

On Sun, 5 May 2013, Diego Biurrun wrote:


---

This is the last av_cold patch.

libavcodec/avfft.c   |8 
libavcodec/bgmc.c|4 ++--
libavcodec/dnxhdenc.c|2 +-
libavcodec/libxvid_rc.c  |3 ++-
libavcodec/mpeg12dec.c   |3 ++-
libavcodec/roqvideoenc.c |2 +-
libavcodec/svq3.c|4 +++-
libavformat/mpegenc.c|2 +-
8 files changed, 16 insertions(+), 12 deletions(-)

diff --git a/libavcodec/avfft.c b/libavcodec/avfft.c
index 8ef5797..513f57e 100644
--- a/libavcodec/avfft.c
+++ b/libavcodec/avfft.c
@@ -45,7 +45,7 @@ void av_fft_calc(FFTContext *s, FFTComplex *z)
s->fft_calc(s, z);
}

-void av_fft_end(FFTContext *s)
+av_cold void av_fft_end(FFTContext *s)
{
if (s) {
ff_fft_end(s);
@@ -80,7 +80,7 @@ void av_mdct_calc(FFTContext *s, FFTSample *output, const 
FFTSample *input)
s->mdct_calc(s, output, input);
}

-void av_mdct_end(FFTContext *s)
+av_cold void av_mdct_end(FFTContext *s)
{
if (s) {
ff_mdct_end(s);
@@ -107,7 +107,7 @@ void av_rdft_calc(RDFTContext *s, FFTSample *data)
s->rdft_calc(s, data);
}

-void av_rdft_end(RDFTContext *s)
+av_cold void av_rdft_end(RDFTContext *s)
{
if (s) {
ff_rdft_end(s);
@@ -134,7 +134,7 @@ void av_dct_calc(DCTContext *s, FFTSample *data)
s->dct_calc(s, data);
}

-void av_dct_end(DCTContext *s)
+av_cold void av_dct_end(DCTContext *s)
{
if (s) {
ff_dct_end(s);
diff --git a/libavcodec/bgmc.c b/libavcodec/bgmc.c
index b8f4bee..3f86224 100644
--- a/libavcodec/bgmc.c
+++ b/libavcodec/bgmc.c
@@ -477,7 +477,7 @@ av_cold int ff_bgmc_init(AVCodecContext *avctx,


/** Release the lookup table arrays */
-void ff_bgmc_end(uint8_t **cf_lut, int **cf_lut_status)
+av_cold void ff_bgmc_end(uint8_t **cf_lut, int **cf_lut_status)
{
av_freep(cf_lut);
av_freep(cf_lut_status);
@@ -495,7 +495,7 @@ av_cold void ff_bgmc_decode_init(GetBitContext *gb, 
unsigned int *h,


/** Finish decoding */
-void ff_bgmc_decode_end(GetBitContext *gb)
+av_cold void ff_bgmc_decode_end(GetBitContext *gb)
{
skip_bits_long(gb, -(VALUE_BITS - 2));
}


This seems like it's something that's called during decoding (as in 
possibly once or more per packet), so I don't think that should have 
av_cold.



diff --git a/libavcodec/dnxhdenc.c b/libavcodec/dnxhdenc.c
index 5b59e64..920fa45 100644
--- a/libavcodec/dnxhdenc.c
+++ b/libavcodec/dnxhdenc.c
@@ -990,7 +990,7 @@ static int dnxhd_encode_picture(AVCodecContext *avctx, 
AVPacket *pkt,
return 0;
}

-static int dnxhd_encode_end(AVCodecContext *avctx)
+static av_cold int dnxhd_encode_end(AVCodecContext *avctx)
{
DNXHDEncContext *ctx = avctx->priv_data;
int max_level = 1<<(ctx->cid_table->bit_depth+2);
diff --git a/libavcodec/libxvid_rc.c b/libavcodec/libxvid_rc.c
index 9c45804..9084d33 100644
--- a/libavcodec/libxvid_rc.c
+++ b/libavcodec/libxvid_rc.c
@@ -170,7 +170,8 @@ float ff_xvid_rate_estimate_qscale(MpegEncContext *s, int 
dry_run){
return xvid_plg_data.quant * FF_QP2LAMBDA;
}

-void ff_xvid_rate_control_uninit(MpegEncContext *s){
+av_cold void ff_xvid_rate_control_uninit(MpegEncContext *s)
+{
xvid_plg_destroy_t xvid_plg_destroy;

xvid_plugin_2pass2(s->rc_context.non_lavc_opaque, XVID_PLG_DESTROY, 
&xvid_plg_destroy, NULL);
diff --git a/libavcodec/mpeg12dec.c b/libavcodec/mpeg12dec.c
index 3bf20c6..16c8523 100644
--- a/libavcodec/mpeg12dec.c
+++ b/libavcodec/mpeg12dec.c
@@ -26,6 +26,7 @@
 */

//#define DEBUG
+#include "libavutil/attributes.h"
#include "libavutil/internal.h"
#include "internal.h"
#include "avcodec.h"
@@ -2355,7 +2356,7 @@ static void flush(AVCodecContext *avctx)
ff_mpeg_flush(avctx);
}

-static int mpeg_decode_end(AVCodecContext *avctx)
+static av_cold int mpeg_decode_end(AVCodecContext *avctx)
{
Mpeg1Context *s = avctx->priv_data;

diff --git a/libavcodec/roqvideoenc.c b/libavcodec/roqvideoenc.c
index db95282..650db67 100644
--- a/libavcodec/roqvideoenc.c
+++ b/libavcodec/roqvideoenc.c
@@ -937,7 +937,7 @@ static void roq_encode_video(RoqContext *enc)
enc->framesSinceKeyframe++;
}

-static int roq_encode_end(AVCodecContext *avctx)
+static av_cold int roq_encode_end(AVCodecContext *avctx)
{
RoqContext *enc = avctx->priv_data;

diff --git a/libavcodec/svq3.c b/libavcodec/svq3.c
index 1ecc1b2..6455821 100644
--- a/libavcodec/svq3.c
+++ b/libavcodec/svq3.c
@@ -39,6 +39,8 @@
 * correctly decodes this file:
 *  http://samples.libav.org/V-codecs/SVQ3/Vertical400kbit.sorenson3.mov
 */
+
+#include "libavutil/attributes.h"
#include "internal.h"
#include "avcodec.h"
#include "mpegvideo.h"
@@ -1281,7 +1283,7 @@ static int svq3_decode_frame(AVCodecContext *avctx, void 
*data,
return buf_size;
}

-static int svq3_decode_end(AVCodecContext *avctx)
+static av_cold int svq3_decode_end(AVCodecContext *avctx)
{
SVQ3Context *s = avctx->priv_data;
H264Context *h = &s->h;
diff --git a/libavformat/mpegenc.c b/libavformat/mpegenc.c
index 85a12d6..c85e484 100644
--- a/libavformat/mpegenc.c
+++ b

Re: [libav-devel] [PATCH 3/3] FATE: use a less ambiguous end time for filter-trim-time test

2013-05-05 Thread Tim W.
On May 5, 2013, at 5:22 PM, Anton Khirnov  wrote:

> 
> On Sun, 5 May 2013 16:49:00 +0200, "Tim W."  wrote:
>> On May 5, 2013, at 8:01 AM, Anton Khirnov  wrote:
>> 
>>> 0.1 seconds at 25 fps is exactly 2.5 frames, which may be rounded either
>>> to 2 or 3 on different platforms.
>> 
>> .09 is still exactly 4.5 frames at 50 fps, which is not as common as 25 but 
>> not completely uncommon either…
>> 
> 
> The point is that in this specific test the input is (or defaults to) 25 fps.

Oh, OK.
___
libav-devel mailing list
libav-devel@libav.org
https://lists.libav.org/mailman/listinfo/libav-devel


[libav-devel] [PATCH] Add av_cold attributes to end functions missing them

2013-05-05 Thread Diego Biurrun
---

This is the last av_cold patch.

 libavcodec/avfft.c   |8 
 libavcodec/bgmc.c|4 ++--
 libavcodec/dnxhdenc.c|2 +-
 libavcodec/libxvid_rc.c  |3 ++-
 libavcodec/mpeg12dec.c   |3 ++-
 libavcodec/roqvideoenc.c |2 +-
 libavcodec/svq3.c|4 +++-
 libavformat/mpegenc.c|2 +-
 8 files changed, 16 insertions(+), 12 deletions(-)

diff --git a/libavcodec/avfft.c b/libavcodec/avfft.c
index 8ef5797..513f57e 100644
--- a/libavcodec/avfft.c
+++ b/libavcodec/avfft.c
@@ -45,7 +45,7 @@ void av_fft_calc(FFTContext *s, FFTComplex *z)
 s->fft_calc(s, z);
 }
 
-void av_fft_end(FFTContext *s)
+av_cold void av_fft_end(FFTContext *s)
 {
 if (s) {
 ff_fft_end(s);
@@ -80,7 +80,7 @@ void av_mdct_calc(FFTContext *s, FFTSample *output, const 
FFTSample *input)
 s->mdct_calc(s, output, input);
 }
 
-void av_mdct_end(FFTContext *s)
+av_cold void av_mdct_end(FFTContext *s)
 {
 if (s) {
 ff_mdct_end(s);
@@ -107,7 +107,7 @@ void av_rdft_calc(RDFTContext *s, FFTSample *data)
 s->rdft_calc(s, data);
 }
 
-void av_rdft_end(RDFTContext *s)
+av_cold void av_rdft_end(RDFTContext *s)
 {
 if (s) {
 ff_rdft_end(s);
@@ -134,7 +134,7 @@ void av_dct_calc(DCTContext *s, FFTSample *data)
 s->dct_calc(s, data);
 }
 
-void av_dct_end(DCTContext *s)
+av_cold void av_dct_end(DCTContext *s)
 {
 if (s) {
 ff_dct_end(s);
diff --git a/libavcodec/bgmc.c b/libavcodec/bgmc.c
index b8f4bee..3f86224 100644
--- a/libavcodec/bgmc.c
+++ b/libavcodec/bgmc.c
@@ -477,7 +477,7 @@ av_cold int ff_bgmc_init(AVCodecContext *avctx,
 
 
 /** Release the lookup table arrays */
-void ff_bgmc_end(uint8_t **cf_lut, int **cf_lut_status)
+av_cold void ff_bgmc_end(uint8_t **cf_lut, int **cf_lut_status)
 {
 av_freep(cf_lut);
 av_freep(cf_lut_status);
@@ -495,7 +495,7 @@ av_cold void ff_bgmc_decode_init(GetBitContext *gb, 
unsigned int *h,
 
 
 /** Finish decoding */
-void ff_bgmc_decode_end(GetBitContext *gb)
+av_cold void ff_bgmc_decode_end(GetBitContext *gb)
 {
 skip_bits_long(gb, -(VALUE_BITS - 2));
 }
diff --git a/libavcodec/dnxhdenc.c b/libavcodec/dnxhdenc.c
index 5b59e64..920fa45 100644
--- a/libavcodec/dnxhdenc.c
+++ b/libavcodec/dnxhdenc.c
@@ -990,7 +990,7 @@ static int dnxhd_encode_picture(AVCodecContext *avctx, 
AVPacket *pkt,
 return 0;
 }
 
-static int dnxhd_encode_end(AVCodecContext *avctx)
+static av_cold int dnxhd_encode_end(AVCodecContext *avctx)
 {
 DNXHDEncContext *ctx = avctx->priv_data;
 int max_level = 1<<(ctx->cid_table->bit_depth+2);
diff --git a/libavcodec/libxvid_rc.c b/libavcodec/libxvid_rc.c
index 9c45804..9084d33 100644
--- a/libavcodec/libxvid_rc.c
+++ b/libavcodec/libxvid_rc.c
@@ -170,7 +170,8 @@ float ff_xvid_rate_estimate_qscale(MpegEncContext *s, int 
dry_run){
 return xvid_plg_data.quant * FF_QP2LAMBDA;
 }
 
-void ff_xvid_rate_control_uninit(MpegEncContext *s){
+av_cold void ff_xvid_rate_control_uninit(MpegEncContext *s)
+{
 xvid_plg_destroy_t xvid_plg_destroy;
 
 xvid_plugin_2pass2(s->rc_context.non_lavc_opaque, XVID_PLG_DESTROY, 
&xvid_plg_destroy, NULL);
diff --git a/libavcodec/mpeg12dec.c b/libavcodec/mpeg12dec.c
index 3bf20c6..16c8523 100644
--- a/libavcodec/mpeg12dec.c
+++ b/libavcodec/mpeg12dec.c
@@ -26,6 +26,7 @@
  */
 
 //#define DEBUG
+#include "libavutil/attributes.h"
 #include "libavutil/internal.h"
 #include "internal.h"
 #include "avcodec.h"
@@ -2355,7 +2356,7 @@ static void flush(AVCodecContext *avctx)
 ff_mpeg_flush(avctx);
 }
 
-static int mpeg_decode_end(AVCodecContext *avctx)
+static av_cold int mpeg_decode_end(AVCodecContext *avctx)
 {
 Mpeg1Context *s = avctx->priv_data;
 
diff --git a/libavcodec/roqvideoenc.c b/libavcodec/roqvideoenc.c
index db95282..650db67 100644
--- a/libavcodec/roqvideoenc.c
+++ b/libavcodec/roqvideoenc.c
@@ -937,7 +937,7 @@ static void roq_encode_video(RoqContext *enc)
 enc->framesSinceKeyframe++;
 }
 
-static int roq_encode_end(AVCodecContext *avctx)
+static av_cold int roq_encode_end(AVCodecContext *avctx)
 {
 RoqContext *enc = avctx->priv_data;
 
diff --git a/libavcodec/svq3.c b/libavcodec/svq3.c
index 1ecc1b2..6455821 100644
--- a/libavcodec/svq3.c
+++ b/libavcodec/svq3.c
@@ -39,6 +39,8 @@
  * correctly decodes this file:
  *  http://samples.libav.org/V-codecs/SVQ3/Vertical400kbit.sorenson3.mov
  */
+
+#include "libavutil/attributes.h"
 #include "internal.h"
 #include "avcodec.h"
 #include "mpegvideo.h"
@@ -1281,7 +1283,7 @@ static int svq3_decode_frame(AVCodecContext *avctx, void 
*data,
 return buf_size;
 }
 
-static int svq3_decode_end(AVCodecContext *avctx)
+static av_cold int svq3_decode_end(AVCodecContext *avctx)
 {
 SVQ3Context *s = avctx->priv_data;
 H264Context *h = &s->h;
diff --git a/libavformat/mpegenc.c b/libavformat/mpegenc.c
index 85a12d6..c85e484 100644
--- a/libavformat/mpegenc.c
+++ b/libavformat/mpegenc.c
@@ -1041,7 +1041,7 @@ retry:
 return 1;
 }
 
-static int mpeg_mux_write_packet(AVFo

Re: [libav-devel] [PATCH 5/6] avformat: Add av_cold attributes to init functions missing them

2013-05-05 Thread Diego Biurrun
On Thu, May 02, 2013 at 10:20:01AM +0200, Diego Biurrun wrote:
> ---
>  libavformat/g723_1.c  |3 ++-
>  libavformat/mpegenc.c |3 ++-
>  libavformat/rtpdec_g726.c |4 +++-
>  libavformat/rtpdec_h263.c |4 +++-
>  libavformat/rtpdec_h263_rfc2190.c |3 ++-
>  libavformat/rtpdec_h264.c |4 +++-
>  libavformat/rtpdec_mpeg12.c   |5 +++--
>  libavformat/rtpdec_mpeg4.c|4 +++-
>  libavformat/rtpdec_mpegts.c   |4 +++-
>  libavformat/rtpdec_xiph.c |5 +++--
>  10 files changed, 27 insertions(+), 12 deletions(-)

OKed by Martin on IRC.

Diego
___
libav-devel mailing list
libav-devel@libav.org
https://lists.libav.org/mailman/listinfo/libav-devel


Re: [libav-devel] [PATCH 3/3] FATE: use a less ambiguous end time for filter-trim-time test

2013-05-05 Thread Anton Khirnov

On Sun, 5 May 2013 16:49:00 +0200, "Tim W."  wrote:
> On May 5, 2013, at 8:01 AM, Anton Khirnov  wrote:
> 
> > 0.1 seconds at 25 fps is exactly 2.5 frames, which may be rounded either
> > to 2 or 3 on different platforms.
> 
> .09 is still exactly 4.5 frames at 50 fps, which is not as common as 25 but 
> not completely uncommon either…
> 

The point is that in this specific test the input is (or defaults to) 25 fps.

-- 
Anton Khirnov
___
libav-devel mailing list
libav-devel@libav.org
https://lists.libav.org/mailman/listinfo/libav-devel

Re: [libav-devel] [PATCH 3/3] FATE: use a less ambiguous end time for filter-trim-time test

2013-05-05 Thread Tim W.
On May 5, 2013, at 8:01 AM, Anton Khirnov  wrote:

> 0.1 seconds at 25 fps is exactly 2.5 frames, which may be rounded either
> to 2 or 3 on different platforms.

.09 is still exactly 4.5 frames at 50 fps, which is not as common as 25 but not 
completely uncommon either…

Tim
___
libav-devel mailing list
libav-devel@libav.org
https://lists.libav.org/mailman/listinfo/libav-devel


Re: [libav-devel] [PATCH 3/3] FATE: use a less ambiguous end time for filter-trim-time test

2013-05-05 Thread Luca Barbato
On 05/05/2013 08:01 AM, Anton Khirnov wrote:
> 0.1 seconds at 25 fps is exactly 2.5 frames, which may be rounded either
> to 2 or 3 on different platforms.
> ---
>  tests/fate/filter-video.mak |2 +-
>  1 file changed, 1 insertion(+), 1 deletion(-)

Ok.

___
libav-devel mailing list
libav-devel@libav.org
https://lists.libav.org/mailman/listinfo/libav-devel


Re: [libav-devel] [PATCH 2/3] configure: add dependencies to lavfi .pc file

2013-05-05 Thread Luca Barbato
On 05/05/2013 08:01 AM, Anton Khirnov wrote:
> The scale filter depends on sws, resample on lavr, and movie on lavf and
> lavc.
> 
> Fixes Bug 502.

We might use Bug-Id: 502, not that we are using/leveraging it yet but
would be easier on gitweb.

Patch itself ok.

lu
___
libav-devel mailing list
libav-devel@libav.org
https://lists.libav.org/mailman/listinfo/libav-devel


Re: [libav-devel] [PATCH 1/3] configure: make avconv select (a)trim filters

2013-05-05 Thread Luca Barbato
On 05/05/2013 08:01 AM, Anton Khirnov wrote:
> They are now used for -ss/-t
> ---
>  configure |4 ++--
>  1 file changed, 2 insertions(+), 2 deletions(-)

Ok.

___
libav-devel mailing list
libav-devel@libav.org
https://lists.libav.org/mailman/listinfo/libav-devel