1
0
mirror of https://github.com/FFmpeg/FFmpeg.git synced 2024-12-23 12:43:46 +02:00

Merge remote-tracking branch 'qatar/master'

* qatar/master:
  lavc: always align height by 32 pixel
  raw: add 10bit YUV definitions
  nut: support 10bit YUV
  mpegvideo_enc: separate declarations and statements
  oma: make header compile standalone
  vp3: Reorder some functions to fix VP3 build with Theora disabled.
  build: fix standalone compilation of ADX encoder
  build: fix standalone compilation of ADPCM decoders
  build: fix standalone compilation of mpc7/mpc8 decoders
  4xm: Use bytestream2 functions to prevent overreads
  bytestream: add a new set of bytestream functions with overread checking
  mpegts: Suppress invalid timebase warnings on DMB streams.
  mpegts: Fix typo in handling sections in the PMT.
  vc1dec: Use the right pointer type for the tmp pointer

Conflicts:
	libavcodec/4xm.c
	libavcodec/utils.c
	libavcodec/vc1dec.c
	libavcodec/vp3.c

Merged-by: Michael Niedermayer <michaelni@gmx.at>
This commit is contained in:
Michael Niedermayer 2011-12-21 02:46:08 +01:00
commit 3be1a4ba9a
17 changed files with 208 additions and 151 deletions

2
configure vendored
View File

@ -1423,6 +1423,8 @@ mp3adufloat_decoder_select="mpegaudiodsp"
mp3float_decoder_select="mpegaudiodsp"
mp3on4_decoder_select="mpegaudiodsp"
mp3on4float_decoder_select="mpegaudiodsp"
mpc7_decoder_select="mpegaudiodsp"
mpc8_decoder_select="mpegaudiodsp"
mpeg_vdpau_decoder_select="vdpau mpegvideo_decoder"
mpeg_xvmc_decoder_deps="X11_extensions_XvMClib_h"
mpeg_xvmc_decoder_select="mpegvideo_decoder"

View File

@ -132,10 +132,8 @@ typedef struct FourXContext{
AVFrame current_picture, last_picture;
GetBitContext pre_gb; ///< ac/dc prefix
GetBitContext gb;
const uint8_t *bytestream;
const uint8_t *bytestream_end;
const uint16_t *wordstream;
const uint16_t *wordstream_end;
GetByteContext g;
GetByteContext g2;
int mv[256];
VLC pre_vlc;
int last_dc;
@ -330,11 +328,11 @@ static void decode_p_block(FourXContext *f, uint16_t *dst, uint16_t *src, int lo
assert(code>=0 && code<=6);
if(code == 0){
if (f->bytestream_end - f->bytestream < 1){
if (f->g.buffer_end - f->g.buffer < 1){
av_log(f->avctx, AV_LOG_ERROR, "bytestream overread\n");
return;
}
src += f->mv[ *f->bytestream++ ];
src += f->mv[ *f->g.buffer++ ];
if(start > src || src > end){
av_log(f->avctx, AV_LOG_ERROR, "mv out of pic\n");
return;
@ -351,37 +349,37 @@ static void decode_p_block(FourXContext *f, uint16_t *dst, uint16_t *src, int lo
}else if(code == 3 && f->version<2){
mcdc(dst, src, log2w, h, stride, 1, 0);
}else if(code == 4){
if (f->bytestream_end - f->bytestream < 1){
if (f->g.buffer_end - f->g.buffer < 1){
av_log(f->avctx, AV_LOG_ERROR, "bytestream overread\n");
return;
}
src += f->mv[ *f->bytestream++ ];
src += f->mv[ *f->g.buffer++ ];
if(start > src || src > end){
av_log(f->avctx, AV_LOG_ERROR, "mv out of pic\n");
return;
}
if (f->wordstream_end - f->wordstream < 1){
if (f->g2.buffer_end - f->g2.buffer < 1){
av_log(f->avctx, AV_LOG_ERROR, "wordstream overread\n");
return;
}
mcdc(dst, src, log2w, h, stride, 1, av_le2ne16(*f->wordstream++));
mcdc(dst, src, log2w, h, stride, 1, bytestream2_get_le16(&f->g2));
}else if(code == 5){
if (f->wordstream_end - f->wordstream < 1){
if (f->g2.buffer_end - f->g2.buffer < 1){
av_log(f->avctx, AV_LOG_ERROR, "wordstream overread\n");
return;
}
mcdc(dst, src, log2w, h, stride, 0, av_le2ne16(*f->wordstream++));
mcdc(dst, src, log2w, h, stride, 0, bytestream2_get_le16(&f->g2));
}else if(code == 6){
if (f->wordstream_end - f->wordstream < 2){
if (f->g2.buffer_end - f->g2.buffer < 2){
av_log(f->avctx, AV_LOG_ERROR, "wordstream overread\n");
return;
}
if(log2w){
dst[0] = av_le2ne16(*f->wordstream++);
dst[1] = av_le2ne16(*f->wordstream++);
dst[0] = bytestream2_get_le16(&f->g2);
dst[1] = bytestream2_get_le16(&f->g2);
}else{
dst[0 ] = av_le2ne16(*f->wordstream++);
dst[stride] = av_le2ne16(*f->wordstream++);
dst[0 ] = bytestream2_get_le16(&f->g2);
dst[stride] = bytestream2_get_le16(&f->g2);
}
}
}
@ -393,7 +391,7 @@ static int decode_p_frame(FourXContext *f, const uint8_t *buf, int length){
uint16_t *src= (uint16_t*)f->last_picture.data[0];
uint16_t *dst= (uint16_t*)f->current_picture.data[0];
const int stride= f->current_picture.linesize[0]>>1;
unsigned int bitstream_size, bytestream_size, wordstream_size, extra;
unsigned int bitstream_size, bytestream_size, wordstream_size, extra, bytestream_offset, wordstream_offset;
if(f->version>1){
extra=20;
@ -425,10 +423,10 @@ static int decode_p_frame(FourXContext *f, const uint8_t *buf, int length){
memset((uint8_t*)f->bitstream_buffer + bitstream_size, 0, FF_INPUT_BUFFER_PADDING_SIZE);
init_get_bits(&f->gb, f->bitstream_buffer, 8*bitstream_size);
f->wordstream= (const uint16_t*)(buf + extra + bitstream_size);
f->wordstream_end= f->wordstream + wordstream_size/2;
f->bytestream= buf + extra + bitstream_size + wordstream_size;
f->bytestream_end = f->bytestream + bytestream_size;
wordstream_offset = extra + bitstream_size;
bytestream_offset = extra + bitstream_size + wordstream_size;
bytestream2_init(&f->g2, buf + wordstream_offset, length - wordstream_offset);
bytestream2_init(&f->g, buf + bytestream_offset, length - bytestream_offset);
init_mv(f);

View File

@ -525,14 +525,14 @@ OBJS-$(CONFIG_PCM_ZORK_DECODER) += pcm.o
OBJS-$(CONFIG_ADPCM_4XM_DECODER) += adpcm.o adpcm_data.o
OBJS-$(CONFIG_ADPCM_ADX_DECODER) += adxdec.o adx.o
OBJS-$(CONFIG_ADPCM_ADX_ENCODER) += adxenc.o
OBJS-$(CONFIG_ADPCM_ADX_ENCODER) += adxenc.o adx.o
OBJS-$(CONFIG_ADPCM_CT_DECODER) += adpcm.o adpcm_data.o
OBJS-$(CONFIG_ADPCM_EA_DECODER) += adpcm.o
OBJS-$(CONFIG_ADPCM_EA_MAXIS_XA_DECODER) += adpcm.o
OBJS-$(CONFIG_ADPCM_EA_R1_DECODER) += adpcm.o
OBJS-$(CONFIG_ADPCM_EA_R2_DECODER) += adpcm.o
OBJS-$(CONFIG_ADPCM_EA_R3_DECODER) += adpcm.o
OBJS-$(CONFIG_ADPCM_EA_XAS_DECODER) += adpcm.o
OBJS-$(CONFIG_ADPCM_EA_DECODER) += adpcm.o adpcm_data.o
OBJS-$(CONFIG_ADPCM_EA_MAXIS_XA_DECODER) += adpcm.o adpcm_data.o
OBJS-$(CONFIG_ADPCM_EA_R1_DECODER) += adpcm.o adpcm_data.o
OBJS-$(CONFIG_ADPCM_EA_R2_DECODER) += adpcm.o adpcm_data.o
OBJS-$(CONFIG_ADPCM_EA_R3_DECODER) += adpcm.o adpcm_data.o
OBJS-$(CONFIG_ADPCM_EA_XAS_DECODER) += adpcm.o adpcm_data.o
OBJS-$(CONFIG_ADPCM_G722_DECODER) += g722.o g722dec.o
OBJS-$(CONFIG_ADPCM_G722_ENCODER) += g722.o g722enc.o
OBJS-$(CONFIG_ADPCM_G726_DECODER) += g726.o
@ -551,13 +551,13 @@ OBJS-$(CONFIG_ADPCM_IMA_WAV_ENCODER) += adpcmenc.o adpcm_data.o
OBJS-$(CONFIG_ADPCM_IMA_WS_DECODER) += adpcm.o adpcm_data.o
OBJS-$(CONFIG_ADPCM_MS_DECODER) += adpcm.o adpcm_data.o
OBJS-$(CONFIG_ADPCM_MS_ENCODER) += adpcmenc.o adpcm_data.o
OBJS-$(CONFIG_ADPCM_SBPRO_2_DECODER) += adpcm.o
OBJS-$(CONFIG_ADPCM_SBPRO_3_DECODER) += adpcm.o
OBJS-$(CONFIG_ADPCM_SBPRO_4_DECODER) += adpcm.o
OBJS-$(CONFIG_ADPCM_SBPRO_2_DECODER) += adpcm.o adpcm_data.o
OBJS-$(CONFIG_ADPCM_SBPRO_3_DECODER) += adpcm.o adpcm_data.o
OBJS-$(CONFIG_ADPCM_SBPRO_4_DECODER) += adpcm.o adpcm_data.o
OBJS-$(CONFIG_ADPCM_SWF_DECODER) += adpcm.o adpcm_data.o
OBJS-$(CONFIG_ADPCM_SWF_ENCODER) += adpcmenc.o adpcm_data.o
OBJS-$(CONFIG_ADPCM_THP_DECODER) += adpcm.o
OBJS-$(CONFIG_ADPCM_XA_DECODER) += adpcm.o
OBJS-$(CONFIG_ADPCM_THP_DECODER) += adpcm.o adpcm_data.o
OBJS-$(CONFIG_ADPCM_XA_DECODER) += adpcm.o adpcm_data.o
OBJS-$(CONFIG_ADPCM_YAMAHA_DECODER) += adpcm.o adpcm_data.o
OBJS-$(CONFIG_ADPCM_YAMAHA_ENCODER) += adpcmenc.o adpcm_data.o

View File

@ -26,6 +26,10 @@
#include "libavutil/common.h"
#include "libavutil/intreadwrite.h"
typedef struct {
const uint8_t *buffer, *buffer_end;
} GetByteContext;
#define DEF_T(type, name, bytes, read, write) \
static av_always_inline type bytestream_get_ ## name(const uint8_t **b){\
(*b) += bytes;\
@ -34,6 +38,18 @@ static av_always_inline type bytestream_get_ ## name(const uint8_t **b){\
static av_always_inline void bytestream_put_ ##name(uint8_t **b, const type value){\
write(*b, value);\
(*b) += bytes;\
}\
static av_always_inline type bytestream2_get_ ## name(GetByteContext *g)\
{\
if (g->buffer_end - g->buffer < bytes)\
return 0;\
return bytestream_get_ ## name(&g->buffer);\
}\
static av_always_inline type bytestream2_peek_ ## name(GetByteContext *g)\
{\
if (g->buffer_end - g->buffer < bytes)\
return 0;\
return read(g->buffer);\
}
#define DEF(name, bytes, read, write) \
@ -55,6 +71,34 @@ DEF (byte, 1, AV_RB8 , AV_WB8 )
#undef DEF64
#undef DEF_T
static av_always_inline void bytestream2_init(GetByteContext *g,
const uint8_t *buf, int buf_size)
{
g->buffer = buf;
g->buffer_end = buf + buf_size;
}
static av_always_inline unsigned int bytestream2_get_bytes_left(GetByteContext *g)
{
return g->buffer_end - g->buffer;
}
static av_always_inline void bytestream2_skip(GetByteContext *g,
unsigned int size)
{
g->buffer += FFMIN(g->buffer_end - g->buffer, size);
}
static av_always_inline unsigned int bytestream2_get_buffer(GetByteContext *g,
uint8_t *dst,
unsigned int size)
{
int size2 = FFMIN(g->buffer_end - g->buffer, size);
memcpy(dst, g->buffer, size2);
g->buffer += size2;
return size2;
}
static av_always_inline unsigned int bytestream_get_buffer(const uint8_t **b, uint8_t *dst, unsigned int size)
{
memcpy(dst, *b, size);

View File

@ -1213,10 +1213,11 @@ no_output_pic:
if (s->reordered_input_picture[0]->f.type == FF_BUFFER_TYPE_SHARED || s->avctx->rc_buffer_size) {
// input is a shared pix, so we can't modifiy it -> alloc a new one & ensure that the shared one is reuseable
Picture *pic;
int i= ff_find_unused_picture(s, 0);
if (i < 0)
return i;
Picture *pic= &s->picture[i];
pic = &s->picture[i];
pic->f.reference = s->reordered_input_picture[0]->f.reference;
if(ff_alloc_picture(s, pic, 0) < 0){

View File

@ -108,6 +108,12 @@ const PixelFormatTag ff_raw_pix_fmt_tags[] = {
{ PIX_FMT_BGR48BE, MKTAG( 48, 'B', 'G', 'R') },
{ PIX_FMT_GRAY16LE, MKTAG('Y', '1', 0 , 16 ) },
{ PIX_FMT_GRAY16BE, MKTAG(16 , 0 , '1', 'Y') },
{ PIX_FMT_YUV420P10LE, MKTAG('Y', '3', 11 , 10 ) },
{ PIX_FMT_YUV420P10BE, MKTAG(10 , 11 , '3', 'Y') },
{ PIX_FMT_YUV422P10LE, MKTAG('Y', '3', 10 , 10 ) },
{ PIX_FMT_YUV422P10BE, MKTAG(10 , 10 , '3', 'Y') },
{ PIX_FMT_YUV444P10LE, MKTAG('Y', '3', 0 , 10 ) },
{ PIX_FMT_YUV444P10BE, MKTAG(10 , 0 , '3', 'Y') },
{ PIX_FMT_YUV420P16LE, MKTAG('Y', '3', 11 , 16 ) },
{ PIX_FMT_YUV420P16BE, MKTAG(16 , 11 , '3', 'Y') },
{ PIX_FMT_YUV422P16LE, MKTAG('Y', '3', 10 , 16 ) },

View File

@ -167,10 +167,8 @@ void avcodec_align_dimensions2(AVCodecContext *s, int *width, int *height,
case PIX_FMT_GBRP9BE:
case PIX_FMT_GBRP10LE:
case PIX_FMT_GBRP10BE:
w_align= 16; //FIXME check for non mpeg style codecs and use less alignment
h_align= 16;
if(s->codec_id == CODEC_ID_MPEG2VIDEO || s->codec_id == CODEC_ID_MJPEG || s->codec_id == CODEC_ID_AMV || s->codec_id == CODEC_ID_THP || s->codec_id == CODEC_ID_H264 || s->codec_id == CODEC_ID_PRORES)
h_align= 32; // interlaced is rounded up to 2 MBs
w_align = 16; //FIXME assume 16 pixel per macroblock
h_align = 16 * 2; // interlaced needs 2 macroblocks height
break;
case PIX_FMT_YUV411P:
case PIX_FMT_UYYVYY411:

View File

@ -5426,13 +5426,12 @@ static int vc1_decode_frame(AVCodecContext *avctx, void *data,
AVFrame *pict = data;
uint8_t *buf2 = NULL;
const uint8_t *buf_start = buf;
uint8_t *tmp;
int mb_height, n_slices1=-1;
struct {
uint8_t *buf;
GetBitContext gb;
int mby_start;
} *slices = NULL;
} *slices = NULL, *tmp;
if(s->flags & CODEC_FLAG_LOW_DELAY)
s->low_delay = 1;

View File

@ -45,9 +45,6 @@
#define FRAGMENT_PIXELS 8
static av_cold int vp3_decode_end(AVCodecContext *avctx);
static void vp3_decode_flush(AVCodecContext *avctx);
//FIXME split things out into their own arrays
typedef struct Vp3Fragment {
int16_t dc;
@ -256,6 +253,63 @@ typedef struct Vp3DecodeContext {
* VP3 specific functions
************************************************************************/
static void vp3_decode_flush(AVCodecContext *avctx)
{
Vp3DecodeContext *s = avctx->priv_data;
if (s->golden_frame.data[0]) {
if (s->golden_frame.data[0] == s->last_frame.data[0])
memset(&s->last_frame, 0, sizeof(AVFrame));
if (s->current_frame.data[0] == s->golden_frame.data[0])
memset(&s->current_frame, 0, sizeof(AVFrame));
ff_thread_release_buffer(avctx, &s->golden_frame);
}
if (s->last_frame.data[0]) {
if (s->current_frame.data[0] == s->last_frame.data[0])
memset(&s->current_frame, 0, sizeof(AVFrame));
ff_thread_release_buffer(avctx, &s->last_frame);
}
if (s->current_frame.data[0])
ff_thread_release_buffer(avctx, &s->current_frame);
}
static av_cold int vp3_decode_end(AVCodecContext *avctx)
{
Vp3DecodeContext *s = avctx->priv_data;
int i;
av_free(s->superblock_coding);
av_free(s->all_fragments);
av_free(s->coded_fragment_list[0]);
av_free(s->dct_tokens_base);
av_free(s->superblock_fragments);
av_free(s->macroblock_coding);
av_free(s->motion_val[0]);
av_free(s->motion_val[1]);
av_free(s->edge_emu_buffer);
if (avctx->internal->is_copy)
return 0;
for (i = 0; i < 16; i++) {
free_vlc(&s->dc_vlc[i]);
free_vlc(&s->ac_vlc_1[i]);
free_vlc(&s->ac_vlc_2[i]);
free_vlc(&s->ac_vlc_3[i]);
free_vlc(&s->ac_vlc_4[i]);
}
free_vlc(&s->superblock_run_length_vlc);
free_vlc(&s->fragment_run_length_vlc);
free_vlc(&s->mode_code_vlc);
free_vlc(&s->motion_vector_vlc);
/* release all frames */
vp3_decode_flush(avctx);
return 0;
}
/*
* This function sets up all of the various blocks mappings:
* superblocks <-> fragments, macroblocks <-> fragments,
@ -2002,43 +2056,6 @@ error:
static void vp3_decode_flush(AVCodecContext *avctx);
static av_cold int vp3_decode_end(AVCodecContext *avctx)
{
Vp3DecodeContext *s = avctx->priv_data;
int i;
av_free(s->superblock_coding);
av_free(s->all_fragments);
av_free(s->coded_fragment_list[0]);
av_free(s->dct_tokens_base);
av_free(s->superblock_fragments);
av_free(s->macroblock_coding);
av_free(s->motion_val[0]);
av_free(s->motion_val[1]);
av_free(s->edge_emu_buffer);
if (avctx->internal->is_copy)
return 0;
for (i = 0; i < 16; i++) {
free_vlc(&s->dc_vlc[i]);
free_vlc(&s->ac_vlc_1[i]);
free_vlc(&s->ac_vlc_2[i]);
free_vlc(&s->ac_vlc_3[i]);
free_vlc(&s->ac_vlc_4[i]);
}
free_vlc(&s->superblock_run_length_vlc);
free_vlc(&s->fragment_run_length_vlc);
free_vlc(&s->mode_code_vlc);
free_vlc(&s->motion_vector_vlc);
/* release all frames */
vp3_decode_flush(avctx);
return 0;
}
static int read_huffman_tree(AVCodecContext *avctx, GetBitContext *gb)
{
Vp3DecodeContext *s = avctx->priv_data;
@ -2073,6 +2090,23 @@ static int read_huffman_tree(AVCodecContext *avctx, GetBitContext *gb)
return 0;
}
static int vp3_init_thread_copy(AVCodecContext *avctx)
{
Vp3DecodeContext *s = avctx->priv_data;
s->superblock_coding = NULL;
s->all_fragments = NULL;
s->coded_fragment_list[0] = NULL;
s->dct_tokens_base = NULL;
s->superblock_fragments = NULL;
s->macroblock_coding = NULL;
s->motion_val[0] = NULL;
s->motion_val[1] = NULL;
s->edge_emu_buffer = NULL;
return 0;
}
#if CONFIG_THEORA_DECODER
static const enum PixelFormat theora_pix_fmts[4] = {
PIX_FMT_YUV420P, PIX_FMT_NONE, PIX_FMT_YUV422P, PIX_FMT_YUV444P
@ -2334,43 +2368,6 @@ static av_cold int theora_decode_init(AVCodecContext *avctx)
return vp3_decode_init(avctx);
}
static void vp3_decode_flush(AVCodecContext *avctx)
{
Vp3DecodeContext *s = avctx->priv_data;
if (s->golden_frame.data[0]) {
if (s->golden_frame.data[0] == s->last_frame.data[0])
memset(&s->last_frame, 0, sizeof(AVFrame));
if (s->current_frame.data[0] == s->golden_frame.data[0])
memset(&s->current_frame, 0, sizeof(AVFrame));
ff_thread_release_buffer(avctx, &s->golden_frame);
}
if (s->last_frame.data[0]) {
if (s->current_frame.data[0] == s->last_frame.data[0])
memset(&s->current_frame, 0, sizeof(AVFrame));
ff_thread_release_buffer(avctx, &s->last_frame);
}
if (s->current_frame.data[0])
ff_thread_release_buffer(avctx, &s->current_frame);
}
static int vp3_init_thread_copy(AVCodecContext *avctx)
{
Vp3DecodeContext *s = avctx->priv_data;
s->superblock_coding = NULL;
s->all_fragments = NULL;
s->coded_fragment_list[0] = NULL;
s->dct_tokens_base = NULL;
s->superblock_fragments = NULL;
s->macroblock_coding = NULL;
s->motion_val[0] = NULL;
s->motion_val[1] = NULL;
s->edge_emu_buffer = NULL;
return 0;
}
AVCodec ff_theora_decoder = {
.name = "theora",
.type = AVMEDIA_TYPE_VIDEO,

View File

@ -762,7 +762,8 @@ static int read_sl_header(PESContext *pes, SLConfigDescr *sl, const uint8_t *buf
if (cts != AV_NOPTS_VALUE)
pes->pts = cts;
avpriv_set_pts_info(pes->st, sl->timestamp_len, 1, sl->timestamp_res);
if (sl->timestamp_len && sl->timestamp_res)
avpriv_set_pts_info(pes->st, sl->timestamp_len, 1, sl->timestamp_res);
return (get_bits_count(&gb) + 7) >> 3;
}
@ -1496,7 +1497,7 @@ static void pmt_cb(MpegTSFilter *filter, const uint8_t *section, int section_len
if (idx >= 0) {
st = ts->stream->streams[idx];
} else {
st = avformat_new_stream(pes->stream, NULL);
st = avformat_new_stream(ts->stream, NULL);
st->id = pid;
st->codec->codec_type = AVMEDIA_TYPE_DATA;
}

View File

@ -70,6 +70,12 @@ const AVCodecTag ff_nut_video_tags[] = {
{ CODEC_ID_RAWVIDEO, MKTAG('R', 'G', 'B', 48 ) },
{ CODEC_ID_RAWVIDEO, MKTAG(48 , 'B', 'G', 'R') },
{ CODEC_ID_RAWVIDEO, MKTAG(48 , 'R', 'G', 'B') },
{ CODEC_ID_RAWVIDEO, MKTAG('Y', '3', 11 , 10 ) },
{ CODEC_ID_RAWVIDEO, MKTAG(10 , 11 , '3', 'Y') },
{ CODEC_ID_RAWVIDEO, MKTAG('Y', '3', 10 , 10 ) },
{ CODEC_ID_RAWVIDEO, MKTAG(10 , 10 , '3', 'Y') },
{ CODEC_ID_RAWVIDEO, MKTAG('Y', '3', 0 , 10 ) },
{ CODEC_ID_RAWVIDEO, MKTAG(10 , 0 , '3', 'Y') },
{ CODEC_ID_RAWVIDEO, MKTAG('Y', '1', 0 , 16 ) },
{ CODEC_ID_RAWVIDEO, MKTAG(16 , 0 , '1', 'Y') },
{ CODEC_ID_RAWVIDEO, MKTAG('Y', '3', 11 , 16 ) },

View File

@ -21,6 +21,10 @@
#ifndef AVFORMAT_OMA_H
#define AVFORMAT_OMA_H
#include <stdint.h>
#include "internal.h"
#define EA3_HEADER_SIZE 96
#define ID3v2_EA3_MAGIC "ea3"
#define OMA_ENC_HEADER_SIZE 16
@ -36,4 +40,5 @@ enum {
extern const uint16_t ff_oma_srate_tab[6];
extern const AVCodecTag ff_oma_codec_tags[];
#endif
#endif /* AVFORMAT_OMA_H */

View File

@ -35,23 +35,23 @@ uyvy422 adcf64516a19fce44df77082bdb16291
yuv410p 2d9225153c83ee1132397d619d94d1b3
yuv411p 8b298af3e43348ca1b11eb8a3252ac6c
yuv420p eba2f135a08829387e2f698ff72a2939
yuv420p10be ea2aee509286fa3d07a6c68fec9967a5
yuv420p10le 645ef73e06de41c83a7bc724179d2ce3
yuv420p10be 2f88c301feeaccd2a5fb55f54fc30be9
yuv420p10le 93f175084af4e78f97c7710e505f3057
yuv420p16be ba858ff4246368c28f03152487f57ef3
yuv420p16le de239729a4fe1d4cfa3743e006654e78
yuv420p9be 64e36fd90573f67ac2006d103972a79b
yuv420p9le 9ed4b1dfabc53fd9e586ff6c4c43af80
yuv422p c9bba4529821d796a6ab09f6a5fd355a
yuv422p10be bdc13b630fd668b34c6fe1aae28dfc71
yuv422p10le d0607c260a45c973e6639f4e449730ad
yuv422p10be 11af7dfafe8bc025c7e3bd82b830fe8a
yuv422p10le ec04efb76efa79bf0d02b21572371a56
yuv422p16be 5499502e1c29534a158a1fe60e889f60
yuv422p16le e3d61fde6978591596bc36b914386623
yuv422p9be 29b71579946940a8c00fa844c9dff507
yuv422p9le 062b7f9cbb972bf36b5bdb1a7623701a
yuv440p 5a064afe2b453bb52cdb3f176b1aa1cf
yuv444p 0a98447b78fd476aa39686da6a74fa2e
yuv444p10be e65cbae7e4f1892c23defbc8e8052cf6
yuv444p10le 767179dd82846cf00ee4c340c9c1ab74
yuv444p10be 71be185a2fb7a353eb024df9bc63212d
yuv444p10le c1c6b30a12065c7901c0a267e4861a0f
yuv444p16be 1c6ea2c2f5e539006112ceec3d4e7d90
yuv444p16le 20f86bc2f68d2b3f1f2b48b97b2189f4
yuv444p9be 6ab31f4c12b533ce318ecdff83cdd054

View File

@ -36,23 +36,23 @@ uyvy422 adcf64516a19fce44df77082bdb16291
yuv410p 2d9225153c83ee1132397d619d94d1b3
yuv411p 8b298af3e43348ca1b11eb8a3252ac6c
yuv420p eba2f135a08829387e2f698ff72a2939
yuv420p10be ea2aee509286fa3d07a6c68fec9967a5
yuv420p10le 645ef73e06de41c83a7bc724179d2ce3
yuv420p10be 2f88c301feeaccd2a5fb55f54fc30be9
yuv420p10le 93f175084af4e78f97c7710e505f3057
yuv420p16be ba858ff4246368c28f03152487f57ef3
yuv420p16le de239729a4fe1d4cfa3743e006654e78
yuv420p9be 64e36fd90573f67ac2006d103972a79b
yuv420p9le 9ed4b1dfabc53fd9e586ff6c4c43af80
yuv422p c9bba4529821d796a6ab09f6a5fd355a
yuv422p10be bdc13b630fd668b34c6fe1aae28dfc71
yuv422p10le d0607c260a45c973e6639f4e449730ad
yuv422p10be 11af7dfafe8bc025c7e3bd82b830fe8a
yuv422p10le ec04efb76efa79bf0d02b21572371a56
yuv422p16be 5499502e1c29534a158a1fe60e889f60
yuv422p16le e3d61fde6978591596bc36b914386623
yuv422p9be 29b71579946940a8c00fa844c9dff507
yuv422p9le 062b7f9cbb972bf36b5bdb1a7623701a
yuv440p 5a064afe2b453bb52cdb3f176b1aa1cf
yuv444p 0a98447b78fd476aa39686da6a74fa2e
yuv444p10be e65cbae7e4f1892c23defbc8e8052cf6
yuv444p10le 767179dd82846cf00ee4c340c9c1ab74
yuv444p10be 71be185a2fb7a353eb024df9bc63212d
yuv444p10le c1c6b30a12065c7901c0a267e4861a0f
yuv444p16be 1c6ea2c2f5e539006112ceec3d4e7d90
yuv444p16le 20f86bc2f68d2b3f1f2b48b97b2189f4
yuv444p9be 6ab31f4c12b533ce318ecdff83cdd054

View File

@ -36,23 +36,23 @@ uyvy422 adcf64516a19fce44df77082bdb16291
yuv410p 2d9225153c83ee1132397d619d94d1b3
yuv411p 8b298af3e43348ca1b11eb8a3252ac6c
yuv420p eba2f135a08829387e2f698ff72a2939
yuv420p10be ea2aee509286fa3d07a6c68fec9967a5
yuv420p10le 645ef73e06de41c83a7bc724179d2ce3
yuv420p10be 2f88c301feeaccd2a5fb55f54fc30be9
yuv420p10le 93f175084af4e78f97c7710e505f3057
yuv420p16be ba858ff4246368c28f03152487f57ef3
yuv420p16le de239729a4fe1d4cfa3743e006654e78
yuv420p9be 64e36fd90573f67ac2006d103972a79b
yuv420p9le 9ed4b1dfabc53fd9e586ff6c4c43af80
yuv422p c9bba4529821d796a6ab09f6a5fd355a
yuv422p10be bdc13b630fd668b34c6fe1aae28dfc71
yuv422p10le d0607c260a45c973e6639f4e449730ad
yuv422p10be 11af7dfafe8bc025c7e3bd82b830fe8a
yuv422p10le ec04efb76efa79bf0d02b21572371a56
yuv422p16be 5499502e1c29534a158a1fe60e889f60
yuv422p16le e3d61fde6978591596bc36b914386623
yuv422p9be 29b71579946940a8c00fa844c9dff507
yuv422p9le 062b7f9cbb972bf36b5bdb1a7623701a
yuv440p 5a064afe2b453bb52cdb3f176b1aa1cf
yuv444p 0a98447b78fd476aa39686da6a74fa2e
yuv444p10be e65cbae7e4f1892c23defbc8e8052cf6
yuv444p10le 767179dd82846cf00ee4c340c9c1ab74
yuv444p10be 71be185a2fb7a353eb024df9bc63212d
yuv444p10le c1c6b30a12065c7901c0a267e4861a0f
yuv444p16be 1c6ea2c2f5e539006112ceec3d4e7d90
yuv444p16le 20f86bc2f68d2b3f1f2b48b97b2189f4
yuv444p9be 6ab31f4c12b533ce318ecdff83cdd054

View File

@ -36,23 +36,23 @@ uyvy422 314bd486277111a95d9369b944fa0400
yuv410p 7df8f6d69b56a8dcb6c7ee908e5018b5
yuv411p 1143e7c5cc28fe0922b051b17733bc4c
yuv420p fdad2d8df8985e3d17e73c71f713cb14
yuv420p10be 6d335e75b553da590135cf8bb999610c
yuv420p10le d510ddbabefd03ef39ec943fcb51b709
yuv420p10be 418039dbd82cf612db88417276aa0d1a
yuv420p10le ff7e5321208ab995b4f95634ebdf192b
yuv420p16be 31988e9a5d6acacaa710f67bc1172f3a
yuv420p16le f5390ce399f88e0e4e2621ed7833b250
yuv420p9be ec4983b7a949c0472110a7a2c58e278a
yuv420p9le c136dce5913a722eee44ab72cff664b2
yuv422p 918e37701ee7377d16a8a6c119c56a40
yuv422p10be cea7ca6b0e66d6f29539885896c88603
yuv422p10le a10c4a5837547716f13cd61918b145f9
yuv422p10be 315654908d50718e175aae018c484732
yuv422p10le 91bbc78a9a56f659b55abc17722dcc09
yuv422p16be e7e34fe9264784763ab6cb406524c0f3
yuv422p16le c435b76b08204dda6908640fb5fd4621
yuv422p9be 82494823944912f73cebc58ad2979bbd
yuv422p9le fc69c8a21f473916a4b4225636b97e06
yuv440p 461503fdb9b90451020aa3b25ddf041c
yuv444p 81b2eba962d12e8d64f003ac56f6faf2
yuv444p10be e9d3c8e744b8b0d8187ca092fa203fc9
yuv444p10le 02f0a336e9da062a64df1ba487e102c5
yuv444p10be fb304d77c6d2e18df5938662a22176f0
yuv444p10le b17136913eb066dca6be6af645b9f7e8
yuv444p16be 0da9bed80f5542682ab286f3261cf24c
yuv444p16le a0c5d3c7bf3f181db503cf8e450d1335
yuv444p9be 9ac2643ce7f7e5c4e17c8c9fd8494d4a

View File

@ -36,23 +36,23 @@ uyvy422 ffbd36720c77398d9a0d03ce2625928f
yuv410p 7bfb39d7afb49d6a6173e6b23ae321eb
yuv411p 4a90048cc3a65fac150e53289700efe1
yuv420p 2e6d6062e8cad37fb3ab2c433b55f382
yuv420p10be fac8e0ae5a81861cddac97ddc4100b66
yuv420p10le cb83ed3552113e0292e30adee774359c
yuv420p10be 7ce787a888381dd46b0212c099ecaad9
yuv420p10le bf22a1c543a7b3dbc556a0eb9592e179
yuv420p16be b6d25ba55bc1831d352f379311b42b6d
yuv420p16le 1d7ef427b6f79a02b93948738dab5442
yuv420p9be 9865bf5c4392b56b1c4eb4f5a3fd32f9
yuv420p9le 0f1e371a1374d3cba2205b70cc7cac90
yuv422p d7f5cb44d9b0210d66d6a8762640ab34
yuv422p10be 588fe319b96513c32e21d3e32b45447f
yuv422p10le 11b57f2bd9661024153f3973b9090cdb
yuv422p10be 0be8378c3773e1c0b394315ef4994351
yuv422p10le 6518094fe8de6bee95af21af1e5dc1e1
yuv422p16be 9bd8f8c961822b586fa4cf992be54acc
yuv422p16le 9c4a1239605c7952b736ac3130163f14
yuv422p9be 7c6f1e140b3999ee7d923854e507752a
yuv422p9le 51f10d79c07989060dd06e767e6d7d60
yuv440p 876385e96165acf51271b20e5d85a416
yuv444p 9c3c667d1613b72d15bc6d851c5eb8f7
yuv444p10be 944a4997c4edb3a8dd0f0493cfd5a1fd
yuv444p10le 2d0947ae89ecc6a501eee6832cb27e06
yuv444p10be ee069cc6db48975eb029d72f889a7fe6
yuv444p10le 645b3335248113cafe3c29edb1d7f3be
yuv444p16be de2dedfc6f12073ffead113f86e07ecf
yuv444p16le 8e83323cf102d6c823a03ae8a7b7e033
yuv444p9be 6ac92b7dc9ab2fc59bee99204886899a