summaryrefslogtreecommitdiff
path: root/libavcodec
diff options
context:
space:
mode:
authorMichael Niedermayer <michaelni@gmx.at>2012-08-14 15:31:43 +0200
committerMichael Niedermayer <michaelni@gmx.at>2012-08-14 15:34:39 +0200
commit7427d1ca4ab202def24fc3cefc4401a351d7248c (patch)
treebe2cd06e1e5457daad74966a0155e86baa5e9086 /libavcodec
parent0e05908c954ff64ef2fcb2a97ed083bc285282c1 (diff)
parent0d230e9312a676266bd6fa3478032db4860221a7 (diff)
Merge remote-tracking branch 'qatar/master'
* qatar/master: g723.1: simplify scale_vector() g723.1: simplify normalize_bits() vda: cosmetics: fix Doxygen comment formatting vda: better frame allocation vda: Merge implementation into one file vda: support synchronous decoding vda: Reuse the bitstream buffer and reallocate it only if needed build: Factor out mpegvideo encoding dependencies to CONFIG_MPEGVIDEOENC avprobe: Include libm.h for the log2 fallback proresenc: use the edge emulation buffer rtmp: handle bytes read reports configure: Fix typo in mpeg2video/svq1 decoder dependency declaration Use log2(x) instead of log(x) / log(2) x86: swscale: fix fragile memory accesses x86: swscale: remove disabled code x86: yadif: fix asm with suncc x86: cabac: allow building with suncc x86: mlpdsp: avoid taking address of void ARM: intmath: use native-size return types for clipping functions Conflicts: configure ffprobe.c libavcodec/Makefile libavcodec/g723_1.c libavcodec/v210dec.h libavcodec/vda.h libavcodec/vda_h264.c libavcodec/x86/cabac.h libavfilter/x86/yadif_template.c libswscale/x86/rgb2rgb_template.c Merged-by: Michael Niedermayer <michaelni@gmx.at>
Diffstat (limited to 'libavcodec')
-rw-r--r--libavcodec/Makefile44
-rw-r--r--libavcodec/g723_1.c12
-rw-r--r--libavcodec/imc.c4
-rw-r--r--libavcodec/snowenc.c2
-rw-r--r--libavcodec/vda.h168
-rw-r--r--libavcodec/vda_h264.c46
-rw-r--r--libavcodec/version.h3
-rw-r--r--libavcodec/x86/cabac.h22
-rw-r--r--libavcodec/x86/h264_i386.h37
-rw-r--r--libavcodec/x86/mlpdsp.c30
10 files changed, 178 insertions, 190 deletions
diff --git a/libavcodec/Makefile b/libavcodec/Makefile
index aded4f4112..a8e4e88749 100644
--- a/libavcodec/Makefile
+++ b/libavcodec/Makefile
@@ -56,6 +56,8 @@ OBJS-$(CONFIG_MPEGAUDIODSP) += mpegaudiodsp.o \
mpegaudiodsp_fixed.o \
mpegaudiodsp_float.o
OBJS-$(CONFIG_MPEGVIDEO) += mpegvideo.o mpegvideo_motion.o
+OBJS-$(CONFIG_MPEGVIDEOENC) += mpegvideo_enc.o mpeg12data.o \
+ motion_est.o ratecontrol.o
RDFT-OBJS-$(CONFIG_HARDCODED_TABLES) += sin_tables.o
OBJS-$(CONFIG_RDFT) += rdft.o $(RDFT-OBJS-yes)
OBJS-$(CONFIG_SINEWIN) += sinewin.o
@@ -144,9 +146,7 @@ OBJS-$(CONFIG_DIRAC_DECODER) += diracdec.o dirac.o diracdsp.o \
dirac_arith.o mpeg12data.o dwt.o
OBJS-$(CONFIG_DFA_DECODER) += dfa.o
OBJS-$(CONFIG_DNXHD_DECODER) += dnxhddec.o dnxhddata.o
-OBJS-$(CONFIG_DNXHD_ENCODER) += dnxhdenc.o dnxhddata.o \
- mpegvideo_enc.o motion_est.o \
- ratecontrol.o mpeg12data.o
+OBJS-$(CONFIG_DNXHD_ENCODER) += dnxhdenc.o dnxhddata.o
OBJS-$(CONFIG_DPX_DECODER) += dpx.o
OBJS-$(CONFIG_DPX_ENCODER) += dpxenc.o
OBJS-$(CONFIG_DSICINAUDIO_DECODER) += dsicinav.o
@@ -199,17 +199,13 @@ OBJS-$(CONFIG_GIF_ENCODER) += gif.o lzwenc.o
OBJS-$(CONFIG_GSM_DECODER) += gsmdec.o gsmdec_data.o msgsmdec.o
OBJS-$(CONFIG_GSM_MS_DECODER) += gsmdec.o gsmdec_data.o msgsmdec.o
OBJS-$(CONFIG_H261_DECODER) += h261dec.o h261.o h261data.o error_resilience.o
-OBJS-$(CONFIG_H261_ENCODER) += h261enc.o h261.o h261data.o \
- mpegvideo_enc.o motion_est.o \
- ratecontrol.o mpeg12data.o
+OBJS-$(CONFIG_H261_ENCODER) += h261enc.o h261.o h261data.o
OBJS-$(CONFIG_H263_DECODER) += h263dec.o h263.o ituh263dec.o \
mpeg4video.o mpeg4videodec.o flvdec.o\
intelh263dec.o error_resilience.o
OBJS-$(CONFIG_H263_VAAPI_HWACCEL) += vaapi_mpeg4.o
-OBJS-$(CONFIG_H263_ENCODER) += mpegvideo_enc.o mpeg4video.o \
- mpeg4videoenc.o motion_est.o \
- ratecontrol.o h263.o ituh263enc.o \
- flvenc.o mpeg12data.o \
+OBJS-$(CONFIG_H263_ENCODER) += mpeg4videoenc.o mpeg4video.o \
+ h263.o ituh263enc.o flvenc.o \
error_resilience.o
OBJS-$(CONFIG_H264_DECODER) += h264.o \
h264_loopfilter.o h264_direct.o \
@@ -243,9 +239,7 @@ OBJS-$(CONFIG_JV_DECODER) += jvdec.o
OBJS-$(CONFIG_KGV1_DECODER) += kgv1dec.o
OBJS-$(CONFIG_KMVC_DECODER) += kmvc.o
OBJS-$(CONFIG_LAGARITH_DECODER) += lagarith.o lagarithrac.o
-OBJS-$(CONFIG_LJPEG_ENCODER) += ljpegenc.o mjpegenc.o mjpeg.o \
- mpegvideo_enc.o motion_est.o \
- ratecontrol.o mpeg12data.o
+OBJS-$(CONFIG_LJPEG_ENCODER) += ljpegenc.o mjpegenc.o mjpeg.o
OBJS-$(CONFIG_LOCO_DECODER) += loco.o
OBJS-$(CONFIG_MACE3_DECODER) += mace.o
OBJS-$(CONFIG_MACE6_DECODER) += mace.o
@@ -254,9 +248,7 @@ OBJS-$(CONFIG_MDEC_DECODER) += mdec.o mpeg12.o mpeg12data.o \
OBJS-$(CONFIG_MICRODVD_DECODER) += microdvddec.o ass.o
OBJS-$(CONFIG_MIMIC_DECODER) += mimic.o
OBJS-$(CONFIG_MJPEG_DECODER) += mjpegdec.o mjpeg.o
-OBJS-$(CONFIG_MJPEG_ENCODER) += mjpegenc.o mjpeg.o \
- mpegvideo_enc.o motion_est.o \
- ratecontrol.o mpeg12data.o
+OBJS-$(CONFIG_MJPEG_ENCODER) += mjpegenc.o mjpeg.o
OBJS-$(CONFIG_MJPEGB_DECODER) += mjpegbdec.o mjpegdec.o mjpeg.o
OBJS-$(CONFIG_MLP_DECODER) += mlpdec.o mlpdsp.o
OBJS-$(CONFIG_MMVIDEO_DECODER) += mmvideo.o
@@ -298,19 +290,15 @@ OBJS-$(CONFIG_MPEGVIDEO_DECODER) += mpeg12.o mpeg12data.o \
OBJS-$(CONFIG_MPEG_XVMC_DECODER) += mpegvideo_xvmc.o
OBJS-$(CONFIG_MPEG1VIDEO_DECODER) += mpeg12.o mpeg12data.o \
error_resilience.o
-OBJS-$(CONFIG_MPEG1VIDEO_ENCODER) += mpeg12enc.o mpegvideo_enc.o \
+OBJS-$(CONFIG_MPEG1VIDEO_ENCODER) += mpeg12enc.o mpeg12.o \
timecode.o \
- motion_est.o ratecontrol.o \
- mpeg12.o mpeg12data.o \
error_resilience.o
OBJS-$(CONFIG_MPEG2_DXVA2_HWACCEL) += dxva2_mpeg2.o
OBJS-$(CONFIG_MPEG2_VAAPI_HWACCEL) += vaapi_mpeg2.o
OBJS-$(CONFIG_MPEG2VIDEO_DECODER) += mpeg12.o mpeg12data.o \
error_resilience.o
-OBJS-$(CONFIG_MPEG2VIDEO_ENCODER) += mpeg12enc.o mpegvideo_enc.o \
+OBJS-$(CONFIG_MPEG2VIDEO_ENCODER) += mpeg12enc.o mpeg12.o \
timecode.o \
- motion_est.o ratecontrol.o \
- mpeg12.o mpeg12data.o \
error_resilience.o
OBJS-$(CONFIG_MPEG4_VAAPI_HWACCEL) += vaapi_mpeg4.o
OBJS-$(CONFIG_MSMPEG4V1_DECODER) += msmpeg4.o msmpeg4data.o
@@ -411,10 +399,8 @@ OBJS-$(CONFIG_SMACKER_DECODER) += smacker.o
OBJS-$(CONFIG_SMC_DECODER) += smc.o
OBJS-$(CONFIG_SNOW_DECODER) += snowdec.o snow.o rangecoder.o
OBJS-$(CONFIG_SNOW_ENCODER) += snowenc.o snow.o rangecoder.o \
- motion_est.o ratecontrol.o \
- h263.o \
- error_resilience.o ituh263enc.o \
- mpegvideo_enc.o mpeg12data.o
+ h263.o ituh263enc.o \
+ error_resilience.o
OBJS-$(CONFIG_SOL_DPCM_DECODER) += dpcm.o
OBJS-$(CONFIG_SONIC_DECODER) += sonic.o
OBJS-$(CONFIG_SONIC_ENCODER) += sonic.o
@@ -428,10 +414,8 @@ OBJS-$(CONFIG_SUNRAST_ENCODER) += sunrastenc.o
OBJS-$(CONFIG_SVQ1_DECODER) += svq1dec.o svq1.o h263.o \
error_resilience.o
OBJS-$(CONFIG_SVQ1_ENCODER) += svq1enc.o svq1.o \
- motion_est.o h263.o \
- error_resilience.o \
- ituh263enc.o mpegvideo_enc.o \
- ratecontrol.o mpeg12data.o
+ h263.o ituh263enc.o \
+ error_resilience.o
OBJS-$(CONFIG_SVQ3_DECODER) += h264.o svq3.o \
h264_loopfilter.o h264_direct.o \
h264_sei.o h264_ps.o h264_refs.o \
diff --git a/libavcodec/g723_1.c b/libavcodec/g723_1.c
index 72151b43d9..70c00d5f66 100644
--- a/libavcodec/g723_1.c
+++ b/libavcodec/g723_1.c
@@ -230,17 +230,7 @@ static int16_t square_root(int val)
*/
static int normalize_bits(int num, int width)
{
- int i = 0;
-
- if (num) {
- if (num == -1)
- return width;
- if (num < 0)
- num = ~num;
- i= width - av_log2(num) - 1;
- i= FFMAX(i, 0);
- }
- return i;
+ return width - av_log2(num) - 1;
}
#define normalize_bits_int16(num) normalize_bits(num, 15)
diff --git a/libavcodec/imc.c b/libavcodec/imc.c
index 76e23865d4..ba48df7460 100644
--- a/libavcodec/imc.c
+++ b/libavcodec/imc.c
@@ -342,7 +342,7 @@ static void imc_decode_level_coefficients(IMCContext *q, int *levlCoeffBuf,
// maybe some frequency division thingy
flcoeffs1[0] = 20000.0 / pow (2, levlCoeffBuf[0] * 0.18945); // 0.18945 = log2(10) * 0.05703125
- flcoeffs2[0] = log(flcoeffs1[0]) / log(2);
+ flcoeffs2[0] = log2f(flcoeffs1[0]);
tmp = flcoeffs1[0];
tmp2 = flcoeffs2[0];
@@ -414,7 +414,7 @@ static int bit_allocation(IMCContext *q, IMCChannel *chctx,
highest = FFMAX(highest, chctx->flcoeffs1[i]);
for (i = 0; i < BANDS - 1; i++)
- chctx->flcoeffs4[i] = chctx->flcoeffs3[i] - log(chctx->flcoeffs5[i]) / log(2);
+ chctx->flcoeffs4[i] = chctx->flcoeffs3[i] - log2f(chctx->flcoeffs5[i]);
chctx->flcoeffs4[BANDS - 1] = limit;
highest = highest * 0.25;
diff --git a/libavcodec/snowenc.c b/libavcodec/snowenc.c
index 0944a700b1..82f6e42669 100644
--- a/libavcodec/snowenc.c
+++ b/libavcodec/snowenc.c
@@ -1538,7 +1538,7 @@ static void update_last_header_values(SnowContext *s){
}
static int qscale2qlog(int qscale){
- return rint(QROOT*log(qscale / (float)FF_QP2LAMBDA)/log(2))
+ return rint(QROOT*log2(qscale / (float)FF_QP2LAMBDA))
+ 61*QROOT/8; ///< 64 > 60
}
diff --git a/libavcodec/vda.h b/libavcodec/vda.h
index 8c5ed66306..ccbf3752cf 100644
--- a/libavcodec/vda.h
+++ b/libavcodec/vda.h
@@ -34,6 +34,7 @@
#if FF_API_VDA_ASYNC
#include <pthread.h>
#endif
+
#include <stdint.h>
// emmintrin.h is unable to compile with -std=c99 -Werror=missing-prototypes
@@ -53,34 +54,33 @@
#if FF_API_VDA_ASYNC
/**
- * This structure is used to store a decoded frame information and data.
+ * This structure is used to store decoded frame information and data.
*
* @deprecated Use synchronous decoding mode.
- *
*/
typedef struct {
/**
- * The PTS of the frame.
- *
- * - encoding: unused
- * - decoding: Set/Unset by libavcodec.
- */
+ * The PTS of the frame.
+ *
+ * - encoding: unused
+ * - decoding: Set/Unset by libavcodec.
+ */
int64_t pts;
/**
- * The CoreVideo buffer that contains the decoded data.
- *
- * - encoding: unused
- * - decoding: Set/Unset by libavcodec.
- */
+ * The CoreVideo buffer that contains the decoded data.
+ *
+ * - encoding: unused
+ * - decoding: Set/Unset by libavcodec.
+ */
CVPixelBufferRef cv_buffer;
/**
- * A pointer to the next frame.
- *
- * - encoding: unused
- * - decoding: Set/Unset by libavcodec.
- */
+ * A pointer to the next frame.
+ *
+ * - encoding: unused
+ * - decoding: Set/Unset by libavcodec.
+ */
struct vda_frame *next_frame;
} vda_frame;
#endif
@@ -93,106 +93,106 @@ typedef struct {
*/
struct vda_context {
/**
- * VDA decoder object.
- *
- * - encoding: unused
- * - decoding: Set/Unset by libavcodec.
- */
+ * VDA decoder object.
+ *
+ * - encoding: unused
+ * - decoding: Set/Unset by libavcodec.
+ */
VDADecoder decoder;
/**
- * The Core Video pixel buffer that contains the current image data.
- *
- * encoding: unused
- * decoding: Set by libavcodec. Unset by user.
- */
+ * The Core Video pixel buffer that contains the current image data.
+ *
+ * encoding: unused
+ * decoding: Set by libavcodec. Unset by user.
+ */
CVPixelBufferRef cv_buffer;
/**
- * An integer value that indicates whether use the hardware decoder in synchronous mode.
- *
- * encoding: unused
- * decoding: Set by user.
- */
+ * Use the hardware decoder in synchronous mode.
+ *
+ * encoding: unused
+ * decoding: Set by user.
+ */
int use_sync_decoding;
#if FF_API_VDA_ASYNC
/**
- * VDA frames queue ordered by presentation timestamp.
- *
- * @deprecated Use synchronous decoding mode.
- *
- * - encoding: unused
- * - decoding: Set/Unset by libavcodec.
- */
+ * VDA frames queue ordered by presentation timestamp.
+ *
+ * @deprecated Use synchronous decoding mode.
+ *
+ * - encoding: unused
+ * - decoding: Set/Unset by libavcodec.
+ */
vda_frame *queue;
/**
- * Mutex for locking queue operations.
- *
- * @deprecated Use synchronous decoding mode.
- *
- * - encoding: unused
- * - decoding: Set/Unset by libavcodec.
- */
+ * Mutex for locking queue operations.
+ *
+ * @deprecated Use synchronous decoding mode.
+ *
+ * - encoding: unused
+ * - decoding: Set/Unset by libavcodec.
+ */
pthread_mutex_t queue_mutex;
#endif
/**
- * The frame width.
- *
- * - encoding: unused
- * - decoding: Set/Unset by user.
- */
+ * The frame width.
+ *
+ * - encoding: unused
+ * - decoding: Set/Unset by user.
+ */
int width;
/**
- * The frame height.
- *
- * - encoding: unused
- * - decoding: Set/Unset by user.
- */
+ * The frame height.
+ *
+ * - encoding: unused
+ * - decoding: Set/Unset by user.
+ */
int height;
/**
- * The frame format.
- *
- * - encoding: unused
- * - decoding: Set/Unset by user.
- */
+ * The frame format.
+ *
+ * - encoding: unused
+ * - decoding: Set/Unset by user.
+ */
int format;
/**
- * The pixel format for output image buffers.
- *
- * - encoding: unused
- * - decoding: Set/Unset by user.
- */
+ * The pixel format for output image buffers.
+ *
+ * - encoding: unused
+ * - decoding: Set/Unset by user.
+ */
OSType cv_pix_fmt_type;
/**
- * The current bitstream buffer.
- *
- * - encoding: unused
- * - decoding: Set/Unset by libavcodec.
- */
- uint8_t *bitstream;
+ * The current bitstream buffer.
+ *
+ * - encoding: unused
+ * - decoding: Set/Unset by libavcodec.
+ */
+ uint8_t *priv_bitstream;
/**
- * The current size of the bitstream.
- *
- * - encoding: unused
- * - decoding: Set/Unset by libavcodec.
- */
- int bitstream_size;
+ * The current size of the bitstream.
+ *
+ * - encoding: unused
+ * - decoding: Set/Unset by libavcodec.
+ */
+ int priv_bitstream_size;
/**
- * The reference size used for fast reallocation.
- *
- * - encoding: unused
- * - decoding: Set/Unset by libavcodec.
- */
- int ref_size;
+ * The reference size used for fast reallocation.
+ *
+ * - encoding: unused
+ * - decoding: Set/Unset by libavcodec.
+ */
+ int priv_allocated_size;
};
/** Create the video decoder. */
diff --git a/libavcodec/vda_h264.c b/libavcodec/vda_h264.c
index 8643701735..78a32245da 100644
--- a/libavcodec/vda_h264.c
+++ b/libavcodec/vda_h264.c
@@ -130,7 +130,7 @@ static void vda_decoder_callback (void *vda_hw_ctx,
uint32_t infoFlags,
CVImageBufferRef image_buffer)
{
- struct vda_context *vda_ctx = (struct vda_context*)vda_hw_ctx;
+ struct vda_context *vda_ctx = vda_hw_ctx;
if (!image_buffer)
return;
@@ -140,8 +140,7 @@ static void vda_decoder_callback (void *vda_hw_ctx,
if (vda_ctx->use_sync_decoding) {
vda_ctx->cv_buffer = CVPixelBufferRetain(image_buffer);
- }
- else {
+ } else {
vda_frame *new_frame;
vda_frame *queue_walker;
@@ -188,8 +187,8 @@ static int vda_sync_decode(struct vda_context *vda_ctx)
uint32_t flush_flags = 1 << 0; ///< kVDADecoderFlush_emitFrames
coded_frame = CFDataCreate(kCFAllocatorDefault,
- vda_ctx->bitstream,
- vda_ctx->bitstream_size);
+ vda_ctx->priv_bitstream,
+ vda_ctx->priv_bitstream_size);
status = VDADecoderDecode(vda_ctx->decoder, 0, coded_frame, NULL);
@@ -210,7 +209,7 @@ static int start_frame(AVCodecContext *avctx,
if (!vda_ctx->decoder)
return -1;
- vda_ctx->bitstream_size = 0;
+ vda_ctx->priv_bitstream_size = 0;
return 0;
}
@@ -225,38 +224,38 @@ static int decode_slice(AVCodecContext *avctx,
if (!vda_ctx->decoder)
return -1;
- tmp = av_fast_realloc(vda_ctx->bitstream,
- &vda_ctx->ref_size,
- vda_ctx->bitstream_size+size+4);
+ tmp = av_fast_realloc(vda_ctx->priv_bitstream,
+ &vda_ctx->priv_allocated_size,
+ vda_ctx->priv_bitstream_size + size + 4);
if (!tmp)
return AVERROR(ENOMEM);
- vda_ctx->bitstream = tmp;
+ vda_ctx->priv_bitstream = tmp;
- AV_WB32(vda_ctx->bitstream+vda_ctx->bitstream_size, size);
- memcpy(vda_ctx->bitstream+vda_ctx->bitstream_size+4, buffer, size);
+ AV_WB32(vda_ctx->priv_bitstream + vda_ctx->priv_bitstream_size, size);
+ memcpy(vda_ctx->priv_bitstream + vda_ctx->priv_bitstream_size + 4, buffer, size);
- vda_ctx->bitstream_size += size + 4;
+ vda_ctx->priv_bitstream_size += size + 4;
return 0;
}
static int end_frame(AVCodecContext *avctx)
{
- H264Context *h = avctx->priv_data;
- struct vda_context *vda_ctx = avctx->hwaccel_context;
- AVFrame *frame = &h->s.current_picture_ptr->f;
+ H264Context *h = avctx->priv_data;
+ struct vda_context *vda_ctx = avctx->hwaccel_context;
+ AVFrame *frame = &h->s.current_picture_ptr->f;
int status;
- if (!vda_ctx->decoder || !vda_ctx->bitstream)
+ if (!vda_ctx->decoder || !vda_ctx->priv_bitstream)
return -1;
if (vda_ctx->use_sync_decoding) {
status = vda_sync_decode(vda_ctx);
frame->data[3] = (void*)vda_ctx->cv_buffer;
} else {
- status = vda_decoder_decode(vda_ctx, vda_ctx->bitstream,
- vda_ctx->bitstream_size,
+ status = vda_decoder_decode(vda_ctx, vda_ctx->priv_bitstream,
+ vda_ctx->priv_bitstream_size,
frame->reordered_opaque);
}
@@ -280,8 +279,8 @@ int ff_vda_create_decoder(struct vda_context *vda_ctx,
CFMutableDictionaryRef io_surface_properties;
CFNumberRef cv_pix_fmt;
- vda_ctx->bitstream = NULL;
- vda_ctx->ref_size = 0;
+ vda_ctx->priv_bitstream = NULL;
+ vda_ctx->priv_allocated_size = 0;
#if FF_API_VDA_ASYNC
pthread_mutex_init(&vda_ctx->queue_mutex, NULL);
@@ -341,7 +340,7 @@ int ff_vda_create_decoder(struct vda_context *vda_ctx,
status = VDADecoderCreate(config_info,
buffer_attributes,
- (VDADecoderOutputCallback *)vda_decoder_callback,
+ vda_decoder_callback,
vda_ctx,
&vda_ctx->decoder);
@@ -368,8 +367,7 @@ int ff_vda_destroy_decoder(struct vda_context *vda_ctx)
vda_clear_queue(vda_ctx);
pthread_mutex_destroy(&vda_ctx->queue_mutex);
#endif
- if (vda_ctx->bitstream)
- av_freep(&vda_ctx->bitstream);
+ av_freep(&vda_ctx->priv_bitstream);
return status;
}
diff --git a/libavcodec/version.h b/libavcodec/version.h
index 8fd2164fac..ab109733b1 100644
--- a/libavcodec/version.h
+++ b/libavcodec/version.h
@@ -89,6 +89,9 @@
#ifndef FF_API_CODEC_ID
#define FF_API_CODEC_ID (LIBAVCODEC_VERSION_MAJOR < 55)
#endif
+#ifndef FF_API_VDA_ASYNC
+#define FF_API_VDA_ASYNC (LIBAVCODEC_VERSION_MAJOR < 55)
+#endif
#ifndef FF_API_VDA_ASYNC
#define FF_API_VDA_ASYNC (LIBAVCODEC_VERSION_MAJOR < 55)
diff --git a/libavcodec/x86/cabac.h b/libavcodec/x86/cabac.h
index dc61a5bce2..dbac83f858 100644
--- a/libavcodec/x86/cabac.h
+++ b/libavcodec/x86/cabac.h
@@ -169,14 +169,16 @@ static av_always_inline int get_cabac_inline_x86(CABACContext *c,
__asm__ volatile(
BRANCHLESS_GET_CABAC("%0", "%q0", "(%4)", "%1", "%w1",
"%2", "%q2", "%3", "%b3",
- "%a6(%5)", "%a7(%5)", "%a8", "%a9", "%a10", "%11")
+ "%c6(%5)", "%c7(%5)",
+ AV_STRINGIFY(H264_NORM_SHIFT_OFFSET),
+ AV_STRINGIFY(H264_LPS_RANGE_OFFSET),
+ AV_STRINGIFY(H264_MLPS_STATE_OFFSET),
+ "%8")
: "=&r"(bit), "+&r"(c->low), "+&r"(c->range), "=&q"(tmp)
: "r"(state), "r"(c),
"i"(offsetof(CABACContext, bytestream)),
- "i"(offsetof(CABACContext, bytestream_end)),
- "i"(H264_NORM_SHIFT_OFFSET),
- "i"(H264_LPS_RANGE_OFFSET),
- "i"(H264_MLPS_STATE_OFFSET) TABLES_ARG
+ "i"(offsetof(CABACContext, bytestream_end))
+ TABLES_ARG
: "%"REG_c, "memory"
);
return bit & 1;
@@ -188,8 +190,8 @@ static av_always_inline int get_cabac_bypass_sign_x86(CABACContext *c, int val)
{
x86_reg tmp;
__asm__ volatile(
- "movl %a6(%2), %k1 \n\t"
- "movl %a3(%2), %%eax \n\t"
+ "movl %c6(%2), %k1 \n\t"
+ "movl %c3(%2), %%eax \n\t"
"shl $17, %k1 \n\t"
"add %%eax, %%eax \n\t"
"sub %k1, %%eax \n\t"
@@ -200,16 +202,16 @@ static av_always_inline int get_cabac_bypass_sign_x86(CABACContext *c, int val)
"sub %%edx, %%ecx \n\t"
"test %%ax, %%ax \n\t"
"jnz 1f \n\t"
- "mov %a4(%2), %1 \n\t"
+ "mov %c4(%2), %1 \n\t"
"subl $0xFFFF, %%eax \n\t"
"movzwl (%1), %%edx \n\t"
"bswap %%edx \n\t"
"shrl $15, %%edx \n\t"
"add $2, %1 \n\t"
"addl %%edx, %%eax \n\t"
- "mov %1, %a4(%2) \n\t"
+ "mov %1, %c4(%2) \n\t"
"1: \n\t"
- "movl %%eax, %a3(%2) \n\t"
+ "movl %%eax, %c3(%2) \n\t"
: "+c"(val), "=&r"(tmp)
: "r"(c),
diff --git a/libavcodec/x86/h264_i386.h b/libavcodec/x86/h264_i386.h
index b059cf9423..0dc0a7cb0f 100644
--- a/libavcodec/x86/h264_i386.h
+++ b/libavcodec/x86/h264_i386.h
@@ -63,7 +63,11 @@ static int decode_significance_x86(CABACContext *c, int max_coeff,
BRANCHLESS_GET_CABAC("%4", "%q4", "(%1)", "%3", "%w3",
"%5", "%q5", "%k0", "%b0",
- "%a11(%6)", "%a12(%6)", "%a13", "%a14", "%a15", "%16")
+ "%c11(%6)", "%c12(%6)",
+ AV_STRINGIFY(H264_NORM_SHIFT_OFFSET),
+ AV_STRINGIFY(H264_LPS_RANGE_OFFSET),
+ AV_STRINGIFY(H264_MLPS_STATE_OFFSET),
+ "%13")
"test $1, %4 \n\t"
" jz 4f \n\t"
@@ -71,7 +75,11 @@ static int decode_significance_x86(CABACContext *c, int max_coeff,
BRANCHLESS_GET_CABAC("%4", "%q4", "(%1)", "%3", "%w3",
"%5", "%q5", "%k0", "%b0",
- "%a11(%6)", "%a12(%6)", "%a13", "%a14", "%a15", "%16")
+ "%c11(%6)", "%c12(%6)",
+ AV_STRINGIFY(H264_NORM_SHIFT_OFFSET),
+ AV_STRINGIFY(H264_LPS_RANGE_OFFSET),
+ AV_STRINGIFY(H264_MLPS_STATE_OFFSET),
+ "%13")
"sub %10, %1 \n\t"
"mov %2, %0 \n\t"
@@ -99,10 +107,8 @@ static int decode_significance_x86(CABACContext *c, int max_coeff,
"+&r"(c->low), "=&r"(bit), "+&r"(c->range)
: "r"(c), "m"(minusstart), "m"(end), "m"(minusindex), "m"(last_off),
"i"(offsetof(CABACContext, bytestream)),
- "i"(offsetof(CABACContext, bytestream_end)),
- "i"(H264_NORM_SHIFT_OFFSET),
- "i"(H264_LPS_RANGE_OFFSET),
- "i"(H264_MLPS_STATE_OFFSET) TABLES_ARG
+ "i"(offsetof(CABACContext, bytestream_end))
+ TABLES_ARG
: "%"REG_c, "memory"
);
return coeff_count;
@@ -137,22 +143,30 @@ static int decode_significance_8x8_x86(CABACContext *c,
BRANCHLESS_GET_CABAC("%4", "%q4", "(%6)", "%3", "%w3",
"%5", "%q5", "%k0", "%b0",
- "%a12(%7)", "%a13(%7)", "%a14", "%a15", "%a16", "%18")
+ "%c12(%7)", "%c13(%7)",
+ AV_STRINGIFY(H264_NORM_SHIFT_OFFSET),
+ AV_STRINGIFY(H264_LPS_RANGE_OFFSET),
+ AV_STRINGIFY(H264_MLPS_STATE_OFFSET),
+ "%15")
"mov %1, %k6 \n\t"
"test $1, %4 \n\t"
" jz 4f \n\t"
#ifdef BROKEN_RELOCATIONS
- "movzbl %a17(%18, %q6), %k6\n\t"
+ "movzbl %c14(%15, %q6), %k6\n\t"
#else
- "movzbl "MANGLE(ff_h264_cabac_tables)"+%a17(%k6), %k6\n\t"
+ "movzbl "MANGLE(ff_h264_cabac_tables)"+%c14(%k6), %k6\n\t"
#endif
"add %11, %6 \n\t"
BRANCHLESS_GET_CABAC("%4", "%q4", "(%6)", "%3", "%w3",
"%5", "%q5", "%k0", "%b0",
- "%a12(%7)", "%a13(%7)", "%a14", "%a15", "%a16", "%18")
+ "%c12(%7)", "%c13(%7)",
+ AV_STRINGIFY(H264_NORM_SHIFT_OFFSET),
+ AV_STRINGIFY(H264_LPS_RANGE_OFFSET),
+ AV_STRINGIFY(H264_MLPS_STATE_OFFSET),
+ "%15")
"mov %2, %0 \n\t"
"mov %1, %k6 \n\t"
@@ -179,9 +193,6 @@ static int decode_significance_8x8_x86(CABACContext *c,
"m"(sig_off), "m"(last_coeff_ctx_base),
"i"(offsetof(CABACContext, bytestream)),
"i"(offsetof(CABACContext, bytestream_end)),
- "i"(H264_NORM_SHIFT_OFFSET),
- "i"(H264_LPS_RANGE_OFFSET),
- "i"(H264_MLPS_STATE_OFFSET),
"i"(H264_LAST_COEFF_FLAG_OFFSET_8x8_OFFSET) TABLES_ARG
: "%"REG_c, "memory"
);
diff --git a/libavcodec/x86/mlpdsp.c b/libavcodec/x86/mlpdsp.c
index 6b9f9efd83..0cd0e4c2fb 100644
--- a/libavcodec/x86/mlpdsp.c
+++ b/libavcodec/x86/mlpdsp.c
@@ -25,21 +25,21 @@
#if HAVE_7REGS
-extern void ff_mlp_firorder_8;
-extern void ff_mlp_firorder_7;
-extern void ff_mlp_firorder_6;
-extern void ff_mlp_firorder_5;
-extern void ff_mlp_firorder_4;
-extern void ff_mlp_firorder_3;
-extern void ff_mlp_firorder_2;
-extern void ff_mlp_firorder_1;
-extern void ff_mlp_firorder_0;
-
-extern void ff_mlp_iirorder_4;
-extern void ff_mlp_iirorder_3;
-extern void ff_mlp_iirorder_2;
-extern void ff_mlp_iirorder_1;
-extern void ff_mlp_iirorder_0;
+extern char ff_mlp_firorder_8;
+extern char ff_mlp_firorder_7;
+extern char ff_mlp_firorder_6;
+extern char ff_mlp_firorder_5;
+extern char ff_mlp_firorder_4;
+extern char ff_mlp_firorder_3;
+extern char ff_mlp_firorder_2;
+extern char ff_mlp_firorder_1;
+extern char ff_mlp_firorder_0;
+
+extern char ff_mlp_iirorder_4;
+extern char ff_mlp_iirorder_3;
+extern char ff_mlp_iirorder_2;
+extern char ff_mlp_iirorder_1;
+extern char ff_mlp_iirorder_0;
static const void *firtable[9] = { &ff_mlp_firorder_0, &ff_mlp_firorder_1,
&ff_mlp_firorder_2, &ff_mlp_firorder_3,