mirror of
https://github.com/FFmpeg/FFmpeg.git
synced 2025-01-29 22:00:58 +02:00
vc-1: Add platform-specific start code search routine to VC1DSPContext.
Initialise VC1DSPContext for parser as well as for decoder. Note, the VC-1 code doesn't actually use the function pointer yet. Signed-off-by: Luca Barbato <lu_zero@gentoo.org>
This commit is contained in:
parent
db7f1c7c5a
commit
adf8227cf4
4
configure
vendored
4
configure
vendored
@ -1885,7 +1885,7 @@ twinvq_decoder_select="mdct lsp sinewin"
|
|||||||
utvideo_decoder_select="bswapdsp"
|
utvideo_decoder_select="bswapdsp"
|
||||||
utvideo_encoder_select="bswapdsp huffman huffyuvencdsp"
|
utvideo_encoder_select="bswapdsp huffman huffyuvencdsp"
|
||||||
vble_decoder_select="huffyuvdsp"
|
vble_decoder_select="huffyuvdsp"
|
||||||
vc1_decoder_select="blockdsp error_resilience h263_decoder h264chroma h264qpel intrax8 mpeg_er qpeldsp"
|
vc1_decoder_select="blockdsp error_resilience h263_decoder h264chroma h264qpel intrax8 mpeg_er qpeldsp startcode"
|
||||||
vc1image_decoder_select="vc1_decoder"
|
vc1image_decoder_select="vc1_decoder"
|
||||||
vorbis_decoder_select="mdct"
|
vorbis_decoder_select="mdct"
|
||||||
vorbis_encoder_select="mdct"
|
vorbis_encoder_select="mdct"
|
||||||
@ -1963,7 +1963,7 @@ wmv3_vdpau_hwaccel_select="vc1_vdpau_hwaccel"
|
|||||||
h264_parser_select="h264_decoder"
|
h264_parser_select="h264_decoder"
|
||||||
mpegvideo_parser_select="mpegvideo"
|
mpegvideo_parser_select="mpegvideo"
|
||||||
mpeg4video_parser_select="error_resilience h263dsp mpeg_er mpegvideo qpeldsp"
|
mpeg4video_parser_select="error_resilience h263dsp mpeg_er mpegvideo qpeldsp"
|
||||||
vc1_parser_select="mpegvideo"
|
vc1_parser_select="mpegvideo startcode"
|
||||||
|
|
||||||
# external libraries
|
# external libraries
|
||||||
libfaac_encoder_deps="libfaac"
|
libfaac_encoder_deps="libfaac"
|
||||||
|
@ -674,7 +674,7 @@ OBJS-$(CONFIG_PNM_PARSER) += pnm_parser.o pnm.o
|
|||||||
OBJS-$(CONFIG_RV30_PARSER) += rv34_parser.o
|
OBJS-$(CONFIG_RV30_PARSER) += rv34_parser.o
|
||||||
OBJS-$(CONFIG_RV40_PARSER) += rv34_parser.o
|
OBJS-$(CONFIG_RV40_PARSER) += rv34_parser.o
|
||||||
OBJS-$(CONFIG_TAK_PARSER) += tak_parser.o tak.o
|
OBJS-$(CONFIG_TAK_PARSER) += tak_parser.o tak.o
|
||||||
OBJS-$(CONFIG_VC1_PARSER) += vc1_parser.o vc1.o vc1data.o \
|
OBJS-$(CONFIG_VC1_PARSER) += vc1_parser.o vc1.o vc1data.o vc1dsp.o \
|
||||||
msmpeg4.o msmpeg4data.o mpeg4video.o \
|
msmpeg4.o msmpeg4data.o mpeg4video.o \
|
||||||
h263.o
|
h263.o
|
||||||
OBJS-$(CONFIG_VORBIS_PARSER) += vorbis_parser.o xiph.o
|
OBJS-$(CONFIG_VORBIS_PARSER) += vorbis_parser.o xiph.o
|
||||||
|
@ -20,6 +20,7 @@
|
|||||||
|
|
||||||
#include "libavutil/attributes.h"
|
#include "libavutil/attributes.h"
|
||||||
#include "libavutil/arm/cpu.h"
|
#include "libavutil/arm/cpu.h"
|
||||||
|
#include "libavcodec/arm/startcode.h"
|
||||||
#include "libavcodec/vc1dsp.h"
|
#include "libavcodec/vc1dsp.h"
|
||||||
#include "vc1dsp.h"
|
#include "vc1dsp.h"
|
||||||
|
|
||||||
@ -27,6 +28,8 @@ av_cold void ff_vc1dsp_init_arm(VC1DSPContext *dsp)
|
|||||||
{
|
{
|
||||||
int cpu_flags = av_get_cpu_flags();
|
int cpu_flags = av_get_cpu_flags();
|
||||||
|
|
||||||
|
if (have_setend(cpu_flags))
|
||||||
|
dsp->startcode_find_candidate = ff_startcode_find_candidate_armv6;
|
||||||
if (have_neon(cpu_flags))
|
if (have_neon(cpu_flags))
|
||||||
ff_vc1dsp_init_neon(dsp);
|
ff_vc1dsp_init_neon(dsp);
|
||||||
}
|
}
|
||||||
|
@ -1688,5 +1688,7 @@ av_cold int ff_vc1_init_common(VC1Context *v)
|
|||||||
v->pq = -1;
|
v->pq = -1;
|
||||||
v->mvrange = 0; /* 7.1.1.18, p80 */
|
v->mvrange = 0; /* 7.1.1.18, p80 */
|
||||||
|
|
||||||
|
ff_vc1dsp_init(&v->vc1dsp);
|
||||||
|
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
|
@ -5629,7 +5629,6 @@ static av_cold int vc1_decode_init(AVCodecContext *avctx)
|
|||||||
ff_blockdsp_init(&s->bdsp, avctx);
|
ff_blockdsp_init(&s->bdsp, avctx);
|
||||||
ff_h264chroma_init(&v->h264chroma, 8);
|
ff_h264chroma_init(&v->h264chroma, 8);
|
||||||
ff_qpeldsp_init(&s->qdsp);
|
ff_qpeldsp_init(&s->qdsp);
|
||||||
ff_vc1dsp_init(&v->vc1dsp);
|
|
||||||
|
|
||||||
if (avctx->codec_id == AV_CODEC_ID_WMV3 || avctx->codec_id == AV_CODEC_ID_WMV3IMAGE) {
|
if (avctx->codec_id == AV_CODEC_ID_WMV3 || avctx->codec_id == AV_CODEC_ID_WMV3IMAGE) {
|
||||||
int count = 0;
|
int count = 0;
|
||||||
|
@ -29,6 +29,7 @@
|
|||||||
#include "h264chroma.h"
|
#include "h264chroma.h"
|
||||||
#include "qpeldsp.h"
|
#include "qpeldsp.h"
|
||||||
#include "vc1dsp.h"
|
#include "vc1dsp.h"
|
||||||
|
#include "startcode.h"
|
||||||
|
|
||||||
/* Apply overlap transform to horizontal edge */
|
/* Apply overlap transform to horizontal edge */
|
||||||
static void vc1_v_overlap_c(uint8_t *src, int stride)
|
static void vc1_v_overlap_c(uint8_t *src, int stride)
|
||||||
@ -948,6 +949,8 @@ av_cold void ff_vc1dsp_init(VC1DSPContext *dsp)
|
|||||||
dsp->sprite_v_double_twoscale = sprite_v_double_twoscale_c;
|
dsp->sprite_v_double_twoscale = sprite_v_double_twoscale_c;
|
||||||
#endif /* CONFIG_WMV3IMAGE_DECODER || CONFIG_VC1IMAGE_DECODER */
|
#endif /* CONFIG_WMV3IMAGE_DECODER || CONFIG_VC1IMAGE_DECODER */
|
||||||
|
|
||||||
|
dsp->startcode_find_candidate = ff_startcode_find_candidate_c;
|
||||||
|
|
||||||
if (ARCH_AARCH64)
|
if (ARCH_AARCH64)
|
||||||
ff_vc1dsp_init_aarch64(dsp);
|
ff_vc1dsp_init_aarch64(dsp);
|
||||||
if (ARCH_ARM)
|
if (ARCH_ARM)
|
||||||
|
@ -71,6 +71,14 @@ typedef struct VC1DSPContext {
|
|||||||
void (*sprite_v_double_twoscale)(uint8_t *dst, const uint8_t *src1a, const uint8_t *src1b, int offset1,
|
void (*sprite_v_double_twoscale)(uint8_t *dst, const uint8_t *src1a, const uint8_t *src1b, int offset1,
|
||||||
const uint8_t *src2a, const uint8_t *src2b, int offset2,
|
const uint8_t *src2a, const uint8_t *src2b, int offset2,
|
||||||
int alpha, int width);
|
int alpha, int width);
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Search buf from the start for up to size bytes. Return the index
|
||||||
|
* of a zero byte, or >= size if not found. Ideally, use lookahead
|
||||||
|
* to filter out any zero bytes that are known to not be followed by
|
||||||
|
* one or more further zero bytes and a one byte.
|
||||||
|
*/
|
||||||
|
int (*startcode_find_candidate)(const uint8_t *buf, int size);
|
||||||
} VC1DSPContext;
|
} VC1DSPContext;
|
||||||
|
|
||||||
void ff_vc1dsp_init(VC1DSPContext* c);
|
void ff_vc1dsp_init(VC1DSPContext* c);
|
||||||
|
Loading…
x
Reference in New Issue
Block a user