* qatar/master: avformat: Drop pointless "format" from container long names swscale: bury one more piece of inline asm under HAVE_INLINE_ASM. wv: K&R formatting cosmetics configure: Add missing descriptions to help output h264_ps: declare array of colorspace strings on its own line. fate: amix: specify f32 sample format for comparison tiny_psnr: support 32-bit float samples eamad/eatgq/eatqi: call special EA IDCT directly eamad: remove use of MpegEncContext mpegvideo: remove unnecessary inclusions of faandct.h af_asyncts: avoid overflow in out_size with large delta values af_asyncts: add first_pts option Conflicts: configure libavcodec/eamad.c libavcodec/h264_ps.c libavformat/crcenc.c libavformat/ffmdec.c libavformat/ffmenc.c libavformat/framecrcenc.c libavformat/md5enc.c libavformat/nutdec.c libavformat/rawenc.c libavformat/yuv4mpeg.c tests/tiny_psnr.c Merged-by: Michael Niedermayer <michaelni@gmx.at>tags/n1.0
@@ -119,6 +119,8 @@ Component options: | |||
--enable-x11grab enable X11 grabbing [no] | |||
--disable-network disable network support [no] | |||
--disable-dct disable DCT code | |||
--disable-dwt disable DWT code | |||
--disable-lsp disable LSP code | |||
--disable-mdct disable MDCT code | |||
--disable-rdft disable RDFT code | |||
--disable-fft disable FFT code | |||
@@ -229,17 +231,19 @@ Advanced options (experts only): | |||
--yasmexe=EXE use yasm-compatible assembler EXE [$yasmexe_default] | |||
--cc=CC use C compiler CC [$cc_default] | |||
--cxx=CXX use C compiler CXX [$cxx_default] | |||
--dep-cc=DEPCC use dependency generator DEPCC [$cc_default] | |||
--ld=LD use linker LD [$ld_default] | |||
--host-cc=HOSTCC use host C compiler HOSTCC | |||
--host-cflags=HCFLAGS use HCFLAGS when compiling for host | |||
--host-ldflags=HLDFLAGS use HLDFLAGS when linking for host | |||
--host-libs=HLIBS use libs HLIBS when linking for host | |||
--host-os=OS compiler host OS [$target_os] | |||
--extra-cflags=ECFLAGS add ECFLAGS to CFLAGS [$CFLAGS] | |||
--extra-cxxflags=ECFLAGS add ECFLAGS to CXXFLAGS [$CXXFLAGS] | |||
--extra-ldflags=ELDFLAGS add ELDFLAGS to LDFLAGS [$LDFLAGS] | |||
--extra-libs=ELIBS add ELIBS [$ELIBS] | |||
--extra-version=STRING version string suffix [] | |||
--optflags override optimization-related compiler flags | |||
--optflags=OPTFLAGS override optimization-related compiler flags | |||
--build-suffix=SUFFIX library name suffix [] | |||
--malloc-prefix=PREFIX prefix malloc and related names with PREFIX | |||
--progs-suffix=SUFFIX program name suffix [] | |||
@@ -248,6 +252,7 @@ Advanced options (experts only): | |||
instruction selection, may crash on older CPUs) | |||
--enable-pic build position-independent code | |||
--enable-sram allow use of on-chip SRAM | |||
--enable-thumb compile for Thumb instruction set | |||
--disable-symver disable symbol versioning | |||
--disable-fastdiv disable table-based division | |||
--enable-hardcoded-tables use hardcoded tables instead of runtime generation | |||
@@ -707,6 +707,13 @@ adding/dropping samples. | |||
@item max_comp | |||
Maximum compensation in samples per second. | |||
@item first_pts | |||
Assume the first pts should be this value. | |||
This allows for padding/trimming at the start of stream. By default, no | |||
assumption is made about the first frame's expected pts, so no padding or | |||
trimming is done. For example, this could be set to 0 to pad the beginning with | |||
silence if an audio stream starts after the video stream. | |||
@end table | |||
@section channelsplit | |||
@@ -2880,9 +2880,6 @@ av_cold void ff_dsputil_init(DSPContext* c, AVCodecContext *avctx) | |||
c->idct_add= ff_faanidct_add; | |||
c->idct = ff_faanidct; | |||
c->idct_permutation_type= FF_NO_IDCT_PERM; | |||
}else if(CONFIG_EATGQ_DECODER && avctx->idct_algo==FF_IDCT_EA) { | |||
c->idct_put= ff_ea_idct_put_c; | |||
c->idct_permutation_type= FF_NO_IDCT_PERM; | |||
}else{ //accurate/default | |||
c->idct_put = ff_simple_idct_put_8; | |||
c->idct_add = ff_simple_idct_add_8; | |||
@@ -108,9 +108,6 @@ PUTAVG_PIXELS(14) | |||
#define ff_put_pixels16x16_c ff_put_pixels16x16_8_c | |||
#define ff_avg_pixels16x16_c ff_avg_pixels16x16_8_c | |||
/* EA functions */ | |||
void ff_ea_idct_put_c(uint8_t *dest, int linesize, DCTELEM *block); | |||
/* RV40 functions */ | |||
void ff_put_rv40_qpel16_mc33_c(uint8_t *dst, uint8_t *src, int stride); | |||
void ff_avg_rv40_qpel16_mc33_c(uint8_t *dst, uint8_t *src, int stride); | |||
@@ -26,6 +26,7 @@ | |||
*/ | |||
#include "dsputil.h" | |||
#include "eaidct.h" | |||
#define ASQRT 181 /* (1/sqrt(2))<<8 */ | |||
#define A4 669 /* cos(pi/8)*sqrt(2)<<9 */ | |||
@@ -0,0 +1,27 @@ | |||
/* | |||
* This file is part of FFmpeg | |||
* | |||
* FFmpeg 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. | |||
* | |||
* FFmpeg 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 FFmpeg; if not, write to the Free Software | |||
* Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA | |||
*/ | |||
#ifndef AVCODEC_EAIDCT_H | |||
#define AVCODEC_EAIDCT_H | |||
#include <stdint.h> | |||
#include "dsputil.h" | |||
void ff_ea_idct_put_c(uint8_t *dest, int linesize, DCTELEM *block); | |||
#endif /* AVCODEC_EAIDCT_H */ |
@@ -32,6 +32,7 @@ | |||
#include "get_bits.h" | |||
#include "dsputil.h" | |||
#include "aandcttab.h" | |||
#include "eaidct.h" | |||
#include "mpeg12.h" | |||
#include "mpeg12data.h" | |||
#include "libavutil/imgutils.h" | |||
@@ -42,12 +43,18 @@ | |||
#define MADe_TAG MKTAG('M', 'A', 'D', 'e') /* MAD lqp-frame */ | |||
typedef struct MadContext { | |||
MpegEncContext s; | |||
AVCodecContext *avctx; | |||
DSPContext dsp; | |||
AVFrame frame; | |||
AVFrame last_frame; | |||
GetBitContext gb; | |||
void *bitstream_buf; | |||
unsigned int bitstream_buf_size; | |||
DECLARE_ALIGNED(16, DCTELEM, block)[64]; | |||
ScanTable scantable; | |||
uint16_t quant_matrix[64]; | |||
int mb_x; | |||
int mb_y; | |||
} MadContext; | |||
static void bswap16_buf(uint16_t *dst, const uint16_t *src, int count) | |||
@@ -59,14 +66,12 @@ static void bswap16_buf(uint16_t *dst, const uint16_t *src, int count) | |||
static av_cold int decode_init(AVCodecContext *avctx) | |||
{ | |||
MadContext *t = avctx->priv_data; | |||
MpegEncContext *s = &t->s; | |||
MadContext *s = avctx->priv_data; | |||
s->avctx = avctx; | |||
avctx->pix_fmt = PIX_FMT_YUV420P; | |||
if (avctx->idct_algo == FF_IDCT_AUTO) | |||
avctx->idct_algo = FF_IDCT_EA; | |||
ff_dsputil_init(&s->dsp, avctx); | |||
ff_init_scantable(s->dsp.idct_permutation, &s->intra_scantable, ff_zigzag_direct); | |||
ff_init_scantable_permutation(s->dsp.idct_permutation, FF_NO_IDCT_PERM); | |||
ff_init_scantable(s->dsp.idct_permutation, &s->scantable, ff_zigzag_direct); | |||
ff_mpeg12_init_vlcs(); | |||
return 0; | |||
} | |||
@@ -83,19 +88,18 @@ static inline void comp(unsigned char *dst, int dst_stride, | |||
static inline void comp_block(MadContext *t, int mb_x, int mb_y, | |||
int j, int mv_x, int mv_y, int add) | |||
{ | |||
MpegEncContext *s = &t->s; | |||
if (j < 4) { | |||
unsigned offset = (mb_y*16 + ((j&2)<<2) + mv_y)*t->last_frame.linesize[0] + mb_x*16 + ((j&1)<<3) + mv_x; | |||
if (offset >= (s->height - 7) * t->last_frame.linesize[0] - 7) | |||
if (offset >= (t->avctx->height - 7) * t->last_frame.linesize[0] - 7) | |||
return; | |||
comp(t->frame.data[0] + (mb_y*16 + ((j&2)<<2))*t->frame.linesize[0] + mb_x*16 + ((j&1)<<3), | |||
t->frame.linesize[0], | |||
t->last_frame.data[0] + offset, | |||
t->last_frame.linesize[0], add); | |||
} else if (!(s->avctx->flags & CODEC_FLAG_GRAY)) { | |||
} else if (!(t->avctx->flags & CODEC_FLAG_GRAY)) { | |||
int index = j - 3; | |||
unsigned offset = (mb_y * 8 + (mv_y/2))*t->last_frame.linesize[index] + mb_x * 8 + (mv_x/2); | |||
if (offset >= (s->height/2 - 7) * t->last_frame.linesize[index] - 7) | |||
if (offset >= (t->avctx->height/2 - 7) * t->last_frame.linesize[index] - 7) | |||
return; | |||
comp(t->frame.data[index] + (mb_y*8)*t->frame.linesize[index] + mb_x * 8, | |||
t->frame.linesize[index], | |||
@@ -106,26 +110,24 @@ static inline void comp_block(MadContext *t, int mb_x, int mb_y, | |||
static inline void idct_put(MadContext *t, DCTELEM *block, int mb_x, int mb_y, int j) | |||
{ | |||
MpegEncContext *s = &t->s; | |||
if (j < 4) { | |||
s->dsp.idct_put( | |||
ff_ea_idct_put_c( | |||
t->frame.data[0] + (mb_y*16 + ((j&2)<<2))*t->frame.linesize[0] + mb_x*16 + ((j&1)<<3), | |||
t->frame.linesize[0], block); | |||
} else if (!(s->avctx->flags & CODEC_FLAG_GRAY)) { | |||
} else if (!(t->avctx->flags & CODEC_FLAG_GRAY)) { | |||
int index = j - 3; | |||
s->dsp.idct_put( | |||
ff_ea_idct_put_c( | |||
t->frame.data[index] + (mb_y*8)*t->frame.linesize[index] + mb_x*8, | |||
t->frame.linesize[index], block); | |||
} | |||
} | |||
static inline int decode_block_intra(MadContext * t, DCTELEM * block) | |||
static inline int decode_block_intra(MadContext *s, DCTELEM * block) | |||
{ | |||
MpegEncContext *s = &t->s; | |||
int level, i, j, run; | |||
RLTable *rl = &ff_rl_mpeg1; | |||
const uint8_t *scantable = s->intra_scantable.permutated; | |||
int16_t *quant_matrix = s->intra_matrix; | |||
const uint8_t *scantable = s->scantable.permutated; | |||
int16_t *quant_matrix = s->quant_matrix; | |||
block[0] = (128 + get_sbits(&s->gb, 8)) * quant_matrix[0]; | |||
@@ -191,9 +193,8 @@ static int decode_motion(GetBitContext *gb) | |||
return value; | |||
} | |||
static int decode_mb(MadContext *t, int inter) | |||
static int decode_mb(MadContext *s, int inter) | |||
{ | |||
MpegEncContext *s = &t->s; | |||
int mv_map = 0; | |||
int mv_x, mv_y; | |||
int j; | |||
@@ -210,32 +211,25 @@ static int decode_mb(MadContext *t, int inter) | |||
for (j=0; j<6; j++) { | |||
if (mv_map & (1<<j)) { // mv_x and mv_y are guarded by mv_map | |||
int add = 2*decode_motion(&s->gb); | |||
if (t->last_frame.data[0]) | |||
comp_block(t, s->mb_x, s->mb_y, j, mv_x, mv_y, add); | |||
if (s->last_frame.data[0]) | |||
comp_block(s, s->mb_x, s->mb_y, j, mv_x, mv_y, add); | |||
} else { | |||
s->dsp.clear_block(t->block); | |||
if(decode_block_intra(t, t->block) < 0) | |||
s->dsp.clear_block(s->block); | |||
if(decode_block_intra(s, s->block) < 0) | |||
return -1; | |||
idct_put(t, t->block, s->mb_x, s->mb_y, j); | |||
idct_put(s, s->block, s->mb_x, s->mb_y, j); | |||
} | |||
} | |||
return 0; | |||
} | |||
static void calc_intra_matrix(MadContext *t, int qscale) | |||
static void calc_quant_matrix(MadContext *s, int qscale) | |||
{ | |||
MpegEncContext *s = &t->s; | |||
int i; | |||
if (s->avctx->idct_algo == FF_IDCT_EA) { | |||
s->intra_matrix[0] = (ff_inv_aanscales[0]*ff_mpeg1_default_intra_matrix[0]) >> 11; | |||
for (i=1; i<64; i++) | |||
s->intra_matrix[i] = (ff_inv_aanscales[i]*ff_mpeg1_default_intra_matrix[i]*qscale + 32) >> 10; | |||
} else { | |||
s->intra_matrix[0] = ff_mpeg1_default_intra_matrix[0]; | |||
for (i=1; i<64; i++) | |||
s->intra_matrix[i] = (ff_mpeg1_default_intra_matrix[i]*qscale) << 1; | |||
} | |||
s->quant_matrix[0] = (ff_inv_aanscales[0]*ff_mpeg1_default_intra_matrix[0]) >> 11; | |||
for (i=1; i<64; i++) | |||
s->quant_matrix[i] = (ff_inv_aanscales[i]*ff_mpeg1_default_intra_matrix[i]*qscale + 32) >> 10; | |||
} | |||
static int decode_frame(AVCodecContext *avctx, | |||
@@ -245,8 +239,8 @@ static int decode_frame(AVCodecContext *avctx, | |||
const uint8_t *buf = avpkt->data; | |||
int buf_size = avpkt->size; | |||
const uint8_t *buf_end = buf+buf_size; | |||
MadContext *t = avctx->priv_data; | |||
MpegEncContext *s = &t->s; | |||
MadContext *s = avctx->priv_data; | |||
int width, height; | |||
int chunk_type; | |||
int inter; | |||
@@ -263,48 +257,48 @@ static int decode_frame(AVCodecContext *avctx, | |||
av_reduce(&avctx->time_base.num, &avctx->time_base.den, | |||
AV_RL16(&buf[6]), 1000, 1<<30); | |||
s->width = AV_RL16(&buf[8]); | |||
s->height = AV_RL16(&buf[10]); | |||
calc_intra_matrix(t, buf[13]); | |||
width = AV_RL16(&buf[8]); | |||
height = AV_RL16(&buf[10]); | |||
calc_quant_matrix(s, buf[13]); | |||
buf += 16; | |||
if (avctx->width != s->width || avctx->height != s->height) { | |||
if((s->width * s->height)/2048*7 > buf_end-buf) | |||
if (avctx->width != width || avctx->height != height) { | |||
if((width * height)/2048*7 > buf_end-buf) | |||
return -1; | |||
if (av_image_check_size(s->width, s->height, 0, avctx) < 0) | |||
if (av_image_check_size(width, height, 0, avctx) < 0) | |||
return -1; | |||
avcodec_set_dimensions(avctx, s->width, s->height); | |||
if (t->frame.data[0]) | |||
avctx->release_buffer(avctx, &t->frame); | |||
if (t->last_frame.data[0]) | |||
avctx->release_buffer(avctx, &t->last_frame); | |||
avcodec_set_dimensions(avctx, width, height); | |||
if (s->frame.data[0]) | |||
avctx->release_buffer(avctx, &s->frame); | |||
if (s->last_frame.data[0]) | |||
avctx->release_buffer(avctx, &s->last_frame); | |||
} | |||
t->frame.reference = 3; | |||
if (!t->frame.data[0]) { | |||
if (avctx->get_buffer(avctx, &t->frame) < 0) { | |||
s->frame.reference = 3; | |||
if (!s->frame.data[0]) { | |||
if (avctx->get_buffer(avctx, &s->frame) < 0) { | |||
av_log(avctx, AV_LOG_ERROR, "get_buffer() failed\n"); | |||
return -1; | |||
} | |||
} | |||
av_fast_malloc(&t->bitstream_buf, &t->bitstream_buf_size, (buf_end-buf) + FF_INPUT_BUFFER_PADDING_SIZE); | |||
if (!t->bitstream_buf) | |||
av_fast_malloc(&s->bitstream_buf, &s->bitstream_buf_size, (buf_end-buf) + FF_INPUT_BUFFER_PADDING_SIZE); | |||
if (!s->bitstream_buf) | |||
return AVERROR(ENOMEM); | |||
bswap16_buf(t->bitstream_buf, (const uint16_t*)buf, (buf_end-buf)/2); | |||
memset((uint8_t*)t->bitstream_buf + (buf_end-buf), 0, FF_INPUT_BUFFER_PADDING_SIZE); | |||
init_get_bits(&s->gb, t->bitstream_buf, 8*(buf_end-buf)); | |||
bswap16_buf(s->bitstream_buf, (const uint16_t*)buf, (buf_end-buf)/2); | |||
memset((uint8_t*)s->bitstream_buf + (buf_end-buf), 0, FF_INPUT_BUFFER_PADDING_SIZE); | |||
init_get_bits(&s->gb, s->bitstream_buf, 8*(buf_end-buf)); | |||
for (s->mb_y=0; s->mb_y < (avctx->height+15)/16; s->mb_y++) | |||
for (s->mb_x=0; s->mb_x < (avctx->width +15)/16; s->mb_x++) | |||
if(decode_mb(t, inter) < 0) | |||
if(decode_mb(s, inter) < 0) | |||
return -1; | |||
*data_size = sizeof(AVFrame); | |||
*(AVFrame*)data = t->frame; | |||
*(AVFrame*)data = s->frame; | |||
if (chunk_type != MADe_TAG) | |||
FFSWAP(AVFrame, t->frame, t->last_frame); | |||
FFSWAP(AVFrame, s->frame, s->last_frame); | |||
return buf_size; | |||
} | |||
@@ -34,10 +34,10 @@ | |||
#include "bytestream.h" | |||
#include "dsputil.h" | |||
#include "aandcttab.h" | |||
#include "eaidct.h" | |||
typedef struct TgqContext { | |||
AVCodecContext *avctx; | |||
DSPContext dsp; | |||
AVFrame frame; | |||
int width,height; | |||
ScanTable scantable; | |||
@@ -48,11 +48,10 @@ typedef struct TgqContext { | |||
static av_cold int tgq_decode_init(AVCodecContext *avctx){ | |||
TgqContext *s = avctx->priv_data; | |||
uint8_t idct_permutation[64]; | |||
s->avctx = avctx; | |||
if(avctx->idct_algo==FF_IDCT_AUTO) | |||
avctx->idct_algo=FF_IDCT_EA; | |||
ff_dsputil_init(&s->dsp, avctx); | |||
ff_init_scantable(s->dsp.idct_permutation, &s->scantable, ff_zigzag_direct); | |||
ff_init_scantable_permutation(idct_permutation, FF_NO_IDCT_PERM); | |||
ff_init_scantable(idct_permutation, &s->scantable, ff_zigzag_direct); | |||
avctx->time_base = (AVRational){1, 15}; | |||
avctx->pix_fmt = PIX_FMT_YUV420P; | |||
return 0; | |||
@@ -109,13 +108,13 @@ static void tgq_idct_put_mb(TgqContext *s, DCTELEM (*block)[64], int mb_x, int m | |||
uint8_t *dest_cb = s->frame.data[1] + (mb_y * 8 * s->frame.linesize[1]) + mb_x * 8; | |||
uint8_t *dest_cr = s->frame.data[2] + (mb_y * 8 * s->frame.linesize[2]) + mb_x * 8; | |||
s->dsp.idct_put(dest_y , linesize, block[0]); | |||
s->dsp.idct_put(dest_y + 8, linesize, block[1]); | |||
s->dsp.idct_put(dest_y + 8*linesize , linesize, block[2]); | |||
s->dsp.idct_put(dest_y + 8*linesize + 8, linesize, block[3]); | |||
ff_ea_idct_put_c(dest_y , linesize, block[0]); | |||
ff_ea_idct_put_c(dest_y + 8, linesize, block[1]); | |||
ff_ea_idct_put_c(dest_y + 8*linesize , linesize, block[2]); | |||
ff_ea_idct_put_c(dest_y + 8*linesize + 8, linesize, block[3]); | |||
if(!(s->avctx->flags&CODEC_FLAG_GRAY)){ | |||
s->dsp.idct_put(dest_cb, s->frame.linesize[1], block[4]); | |||
s->dsp.idct_put(dest_cr, s->frame.linesize[2], block[5]); | |||
ff_ea_idct_put_c(dest_cb, s->frame.linesize[1], block[4]); | |||
ff_ea_idct_put_c(dest_cr, s->frame.linesize[2], block[5]); | |||
} | |||
} | |||
@@ -180,10 +179,7 @@ static void tgq_calculate_qtable(TgqContext *s, int quant){ | |||
const int b = (11*(100-quant))/100 + 4; | |||
for(j=0;j<8;j++) | |||
for(i=0;i<8;i++) | |||
if (s->avctx->idct_algo==FF_IDCT_EA) | |||
s->qtable[j*8+i] = ((a*(j+i)/(7+7) + b)*ff_inv_aanscales[j*8+i])>>(14-4); | |||
else | |||
s->qtable[j*8+i] = (a*(j+i)/(7+7) + b)<<3; | |||
s->qtable[j*8+i] = ((a*(j+i)/(7+7) + b)*ff_inv_aanscales[j*8+i])>>(14-4); | |||
} | |||
static int tgq_decode_frame(AVCodecContext *avctx, | |||
@@ -30,6 +30,7 @@ | |||
#include "get_bits.h" | |||
#include "dsputil.h" | |||
#include "aandcttab.h" | |||
#include "eaidct.h" | |||
#include "mpeg12.h" | |||
#include "mpegvideo.h" | |||
@@ -46,9 +47,8 @@ static av_cold int tqi_decode_init(AVCodecContext *avctx) | |||
TqiContext *t = avctx->priv_data; | |||
MpegEncContext *s = &t->s; | |||
s->avctx = avctx; | |||
if(avctx->idct_algo==FF_IDCT_AUTO) | |||
avctx->idct_algo=FF_IDCT_EA; | |||
ff_dsputil_init(&s->dsp, avctx); | |||
ff_init_scantable_permutation(s->dsp.idct_permutation, FF_NO_IDCT_PERM); | |||
ff_init_scantable(s->dsp.idct_permutation, &s->intra_scantable, ff_zigzag_direct); | |||
s->qscale = 1; | |||
avctx->time_base = (AVRational){1, 15}; | |||
@@ -76,13 +76,13 @@ static inline void tqi_idct_put(TqiContext *t, DCTELEM (*block)[64]) | |||
uint8_t *dest_cb = t->frame.data[1] + (s->mb_y * 8 * t->frame.linesize[1]) + s->mb_x * 8; | |||
uint8_t *dest_cr = t->frame.data[2] + (s->mb_y * 8 * t->frame.linesize[2]) + s->mb_x * 8; | |||
s->dsp.idct_put(dest_y , linesize, block[0]); | |||
s->dsp.idct_put(dest_y + 8, linesize, block[1]); | |||
s->dsp.idct_put(dest_y + 8*linesize , linesize, block[2]); | |||
s->dsp.idct_put(dest_y + 8*linesize + 8, linesize, block[3]); | |||
ff_ea_idct_put_c(dest_y , linesize, block[0]); | |||
ff_ea_idct_put_c(dest_y + 8, linesize, block[1]); | |||
ff_ea_idct_put_c(dest_y + 8*linesize , linesize, block[2]); | |||
ff_ea_idct_put_c(dest_y + 8*linesize + 8, linesize, block[3]); | |||
if(!(s->avctx->flags&CODEC_FLAG_GRAY)) { | |||
s->dsp.idct_put(dest_cb, t->frame.linesize[1], block[4]); | |||
s->dsp.idct_put(dest_cr, t->frame.linesize[2], block[5]); | |||
ff_ea_idct_put_c(dest_cb, t->frame.linesize[1], block[4]); | |||
ff_ea_idct_put_c(dest_cr, t->frame.linesize[2], block[5]); | |||
} | |||
} | |||
@@ -90,15 +90,9 @@ static void tqi_calculate_qtable(MpegEncContext *s, int quant) | |||
{ | |||
const int qscale = (215 - 2*quant)*5; | |||
int i; | |||
if (s->avctx->idct_algo==FF_IDCT_EA) { | |||
s->intra_matrix[0] = (ff_inv_aanscales[0]*ff_mpeg1_default_intra_matrix[0])>>11; | |||
for(i=1; i<64; i++) | |||
s->intra_matrix[i] = (ff_inv_aanscales[i]*ff_mpeg1_default_intra_matrix[i]*qscale + 32)>>14; | |||
}else{ | |||
s->intra_matrix[0] = ff_mpeg1_default_intra_matrix[0]; | |||
for(i=1; i<64; i++) | |||
s->intra_matrix[i] = (ff_mpeg1_default_intra_matrix[i]*qscale + 32)>>3; | |||
} | |||
s->intra_matrix[0] = (ff_inv_aanscales[0]*ff_mpeg1_default_intra_matrix[0])>>11; | |||
for(i=1; i<64; i++) | |||
s->intra_matrix[i] = (ff_inv_aanscales[i]*ff_mpeg1_default_intra_matrix[i]*qscale + 32)>>14; | |||
} | |||
static int tqi_decode_frame(AVCodecContext *avctx, | |||
@@ -491,6 +491,7 @@ int ff_h264_decode_seq_parameter_set(H264Context *h){ | |||
sps->sar.den= 1; | |||
if(s->avctx->debug&FF_DEBUG_PICT_INFO){ | |||
static const char csp[4][5] = { "Gray", "420", "422", "444" }; | |||
av_log(h->s.avctx, AV_LOG_DEBUG, "sps:%u profile:%d/%d poc:%d ref:%d %dx%d %s %s crop:%d/%d/%d/%d %s %s %d/%d b%d\n", | |||
sps_id, sps->profile_idc, sps->level_idc, | |||
sps->poc_type, | |||
@@ -501,7 +502,7 @@ int ff_h264_decode_seq_parameter_set(H264Context *h){ | |||
sps->crop_left, sps->crop_right, | |||
sps->crop_top, sps->crop_bottom, | |||
sps->vui_parameters_present_flag ? "VUI" : "", | |||
((const char*[]){"Gray","420","422","444"})[sps->chroma_format_idc], | |||
csp[sps->chroma_format_idc], | |||
sps->timing_info_present_flag ? sps->num_units_in_tick : 0, | |||
sps->timing_info_present_flag ? sps->time_scale : 0, | |||
sps->bit_depth_luma | |||
@@ -36,7 +36,6 @@ | |||
#include "mpegvideo_common.h" | |||
#include "mjpegenc.h" | |||
#include "msmpeg4.h" | |||
#include "faandct.h" | |||
#include "xvmc_internal.h" | |||
#include "thread.h" | |||
#include <limits.h> | |||
@@ -37,7 +37,6 @@ | |||
#include "mpegvideo.h" | |||
#include "mjpegenc.h" | |||
#include "msmpeg4.h" | |||
#include "faandct.h" | |||
#include <limits.h> | |||
int ff_dct_quantize_c(MpegEncContext *s, DCTELEM *block, int n, int qscale, int *overflow); | |||
@@ -49,6 +49,7 @@ static const AVOption asyncts_options[] = { | |||
{ "min_delta", "Minimum difference between timestamps and audio data " | |||
"(in seconds) to trigger padding/trimmin the data.", OFFSET(min_delta_sec), AV_OPT_TYPE_FLOAT, { 0.1 }, 0, INT_MAX, A }, | |||
{ "max_comp", "Maximum compensation in samples per second.", OFFSET(max_comp), AV_OPT_TYPE_INT, { 500 }, 0, INT_MAX, A }, | |||
{ "first_pts", "Assume the first pts should be this value.", OFFSET(pts), AV_OPT_TYPE_INT64, { AV_NOPTS_VALUE }, INT64_MIN, INT64_MAX, A }, | |||
{ NULL }, | |||
}; | |||
@@ -68,8 +69,6 @@ static int init(AVFilterContext *ctx, const char *args) | |||
} | |||
av_opt_free(s); | |||
s->pts = AV_NOPTS_VALUE; | |||
return 0; | |||
} | |||
@@ -182,7 +181,7 @@ static int filter_samples(AVFilterLink *inlink, AVFilterBufferRef *buf) | |||
if (labs(delta) > s->min_delta) { | |||
av_log(ctx, AV_LOG_VERBOSE, "Discontinuity - %"PRId64" samples.\n", delta); | |||
out_size += delta; | |||
out_size = av_clipl_int32((int64_t)out_size + delta); | |||
} else { | |||
if (s->resample) { | |||
int comp = av_clip(delta, -s->max_comp, s->max_comp); | |||
@@ -359,7 +359,7 @@ static int fourxm_read_close(AVFormatContext *s) | |||
AVInputFormat ff_fourxm_demuxer = { | |||
.name = "4xm", | |||
.long_name = NULL_IF_CONFIG_SMALL("4X Technologies format"), | |||
.long_name = NULL_IF_CONFIG_SMALL("4X Technologies"), | |||
.priv_data_size = sizeof(FourxmDemuxContext), | |||
.read_probe = fourxm_probe, | |||
.read_header = fourxm_read_header, | |||
@@ -157,7 +157,7 @@ static int amr_read_packet(AVFormatContext *s, AVPacket *pkt) | |||
#if CONFIG_AMR_DEMUXER | |||
AVInputFormat ff_amr_demuxer = { | |||
.name = "amr", | |||
.long_name = NULL_IF_CONFIG_SMALL("3GPP AMR file format"), | |||
.long_name = NULL_IF_CONFIG_SMALL("3GPP AMR"), | |||
.read_probe = amr_probe, | |||
.read_header = amr_read_header, | |||
.read_packet = amr_read_packet, | |||
@@ -168,7 +168,7 @@ AVInputFormat ff_amr_demuxer = { | |||
#if CONFIG_AMR_MUXER | |||
AVOutputFormat ff_amr_muxer = { | |||
.name = "amr", | |||
.long_name = NULL_IF_CONFIG_SMALL("3GPP AMR file format"), | |||
.long_name = NULL_IF_CONFIG_SMALL("3GPP AMR"), | |||
.mime_type = "audio/amr", | |||
.extensions = "amr", | |||
.audio_codec = CODEC_ID_AMR_NB, | |||
@@ -83,7 +83,7 @@ static int apc_read_packet(AVFormatContext *s, AVPacket *pkt) | |||
AVInputFormat ff_apc_demuxer = { | |||
.name = "apc", | |||
.long_name = NULL_IF_CONFIG_SMALL("CRYO APC format"), | |||
.long_name = NULL_IF_CONFIG_SMALL("CRYO APC"), | |||
.read_probe = apc_probe, | |||
.read_header = apc_read_header, | |||
.read_packet = apc_read_packet, | |||
@@ -205,7 +205,7 @@ static int read_seek2(AVFormatContext *s, int stream_index, | |||
AVInputFormat ff_ass_demuxer = { | |||
.name = "ass", | |||
.long_name = NULL_IF_CONFIG_SMALL("Advanced SubStation Alpha subtitle format"), | |||
.long_name = NULL_IF_CONFIG_SMALL("Advanced SubStation Alpha subtitle"), | |||
.priv_data_size = sizeof(ASSContext), | |||
.read_probe = probe, | |||
.read_header = read_header, | |||
@@ -79,7 +79,7 @@ static int write_trailer(AVFormatContext *s) | |||
AVOutputFormat ff_ass_muxer = { | |||
.name = "ass", | |||
.long_name = NULL_IF_CONFIG_SMALL("Advanced SubStation Alpha subtitle format"), | |||
.long_name = NULL_IF_CONFIG_SMALL("Advanced SubStation Alpha subtitle"), | |||
.mime_type = "text/x-ssa", | |||
.extensions = "ass,ssa", | |||
.priv_data_size = sizeof(ASSContext), | |||
@@ -223,7 +223,7 @@ static int avs_read_close(AVFormatContext * s) | |||
AVInputFormat ff_avs_demuxer = { | |||
.name = "avs", | |||
.long_name = NULL_IF_CONFIG_SMALL("AVS format"), | |||
.long_name = NULL_IF_CONFIG_SMALL("AVS"), | |||
.priv_data_size = sizeof(AvsFormat), | |||
.read_probe = avs_probe, | |||
.read_header = avs_read_header, | |||
@@ -283,7 +283,7 @@ static int vid_read_close(AVFormatContext *s) | |||
AVInputFormat ff_bethsoftvid_demuxer = { | |||
.name = "bethsoftvid", | |||
.long_name = NULL_IF_CONFIG_SMALL("Bethesda Softworks VID format"), | |||
.long_name = NULL_IF_CONFIG_SMALL("Bethesda Softworks VID"), | |||
.priv_data_size = sizeof(BVID_DemuxContext), | |||
.read_probe = vid_probe, | |||
.read_header = vid_read_header, | |||
@@ -71,7 +71,7 @@ static int read_packet(AVFormatContext *s, AVPacket *pkt) | |||
AVInputFormat ff_cdg_demuxer = { | |||
.name = "cdg", | |||
.long_name = NULL_IF_CONFIG_SMALL("CD Graphics Format"), | |||
.long_name = NULL_IF_CONFIG_SMALL("CD Graphics"), | |||
.read_header = read_header, | |||
.read_packet = read_packet, | |||
.flags = AVFMT_GENERIC_INDEX, | |||
@@ -171,7 +171,7 @@ static const AVClass cdxl_demuxer_class = { | |||
AVInputFormat ff_cdxl_demuxer = { | |||
.name = "cdxl", | |||
.long_name = NULL_IF_CONFIG_SMALL("Commodore CDXL video format"), | |||
.long_name = NULL_IF_CONFIG_SMALL("Commodore CDXL video"), | |||
.priv_data_size = sizeof(CDXLDemuxContext), | |||
.read_header = cdxl_read_header, | |||
.read_packet = cdxl_read_packet, | |||
@@ -56,7 +56,7 @@ static int crc_write_trailer(struct AVFormatContext *s) | |||
AVOutputFormat ff_crc_muxer = { | |||
.name = "crc", | |||
.long_name = NULL_IF_CONFIG_SMALL("CRC testing format"), | |||
.long_name = NULL_IF_CONFIG_SMALL("CRC testing"), | |||
.priv_data_size = sizeof(CRCState), | |||
.audio_codec = CODEC_ID_PCM_S16LE, | |||
.video_codec = CODEC_ID_RAWVIDEO, | |||
@@ -72,7 +72,7 @@ static int daud_write_packet(struct AVFormatContext *s, AVPacket *pkt) | |||
#if CONFIG_DAUD_DEMUXER | |||
AVInputFormat ff_daud_demuxer = { | |||
.name = "daud", | |||
.long_name = NULL_IF_CONFIG_SMALL("D-Cinema audio format"), | |||
.long_name = NULL_IF_CONFIG_SMALL("D-Cinema audio"), | |||
.read_header = daud_header, | |||
.read_packet = daud_packet, | |||
.extensions = "302,daud", | |||
@@ -82,7 +82,7 @@ AVInputFormat ff_daud_demuxer = { | |||
#if CONFIG_DAUD_MUXER | |||
AVOutputFormat ff_daud_muxer = { | |||
.name = "daud", | |||
.long_name = NULL_IF_CONFIG_SMALL("D-Cinema audio format"), | |||
.long_name = NULL_IF_CONFIG_SMALL("D-Cinema audio"), | |||
.extensions = "302", | |||
.audio_codec = CODEC_ID_PCM_S24DAUD, | |||
.video_codec = CODEC_ID_NONE, | |||
@@ -222,7 +222,7 @@ static int cin_read_packet(AVFormatContext *s, AVPacket *pkt) | |||
AVInputFormat ff_dsicin_demuxer = { | |||
.name = "dsicin", | |||
.long_name = NULL_IF_CONFIG_SMALL("Delphine Software International CIN format"), | |||
.long_name = NULL_IF_CONFIG_SMALL("Delphine Software International CIN"), | |||
.priv_data_size = sizeof(CinDemuxContext), | |||
.read_probe = cin_probe, | |||
.read_header = cin_read_header, | |||
@@ -591,7 +591,7 @@ static int dv_probe(AVProbeData *p) | |||
#if CONFIG_DV_DEMUXER | |||
AVInputFormat ff_dv_demuxer = { | |||
.name = "dv", | |||
.long_name = NULL_IF_CONFIG_SMALL("DV video format"), | |||
.long_name = NULL_IF_CONFIG_SMALL("DV video"), | |||
.priv_data_size = sizeof(RawDVContext), | |||
.read_probe = dv_probe, | |||
.read_header = dv_read_header, | |||
@@ -407,7 +407,7 @@ static int dv_write_trailer(struct AVFormatContext *s) | |||
AVOutputFormat ff_dv_muxer = { | |||
.name = "dv", | |||
.long_name = NULL_IF_CONFIG_SMALL("DV video format"), | |||
.long_name = NULL_IF_CONFIG_SMALL("DV video"), | |||
.extensions = "dv", | |||
.priv_data_size = sizeof(DVMuxContext), | |||
.audio_codec = CODEC_ID_PCM_S16LE, | |||
@@ -617,7 +617,7 @@ get_video_packet: | |||
AVInputFormat ff_ea_demuxer = { | |||
.name = "ea", | |||
.long_name = NULL_IF_CONFIG_SMALL("Electronic Arts Multimedia Format"), | |||
.long_name = NULL_IF_CONFIG_SMALL("Electronic Arts Multimedia"), | |||
.priv_data_size = sizeof(EaDemuxContext), | |||
.read_probe = ea_probe, | |||
.read_header = ea_read_header, | |||
@@ -528,7 +528,7 @@ static int ffm_probe(AVProbeData *p) | |||
AVInputFormat ff_ffm_demuxer = { | |||
.name = "ffm", | |||
.long_name = NULL_IF_CONFIG_SMALL("FFM (FFserver live feed) format"), | |||
.long_name = NULL_IF_CONFIG_SMALL("FFM (FFserver live feed)"), | |||
.priv_data_size = sizeof(FFMContext), | |||
.read_probe = ffm_probe, | |||
.read_header = ffm_read_header, | |||
@@ -240,7 +240,7 @@ static int ffm_write_trailer(AVFormatContext *s) | |||
AVOutputFormat ff_ffm_muxer = { | |||
.name = "ffm", | |||
.long_name = NULL_IF_CONFIG_SMALL("FFM (FFserver live feed) format"), | |||
.long_name = NULL_IF_CONFIG_SMALL("FFM (FFserver live feed)"), | |||
.extensions = "ffm", | |||
.priv_data_size = sizeof(FFMContext), | |||
.audio_codec = CODEC_ID_MP2, | |||
@@ -168,7 +168,7 @@ static int read_packet(AVFormatContext *s, AVPacket *pkt) | |||
AVInputFormat ff_ffmetadata_demuxer = { | |||
.name = "ffmetadata", | |||
.long_name = NULL_IF_CONFIG_SMALL("FFmpeg metadata in text format"), | |||
.long_name = NULL_IF_CONFIG_SMALL("FFmpeg metadata in text"), | |||
.read_probe = probe, | |||
.read_header = read_header, | |||
.read_packet = read_packet, | |||
@@ -92,7 +92,7 @@ static int write_packet(AVFormatContext *s, AVPacket *pkt) | |||
AVOutputFormat ff_ffmetadata_muxer = { | |||
.name = "ffmetadata", | |||
.long_name = NULL_IF_CONFIG_SMALL("FFmpeg metadata in text format"), | |||
.long_name = NULL_IF_CONFIG_SMALL("FFmpeg metadata in text"), | |||
.extensions = "ffmeta", | |||
.write_header = write_header, | |||
.write_packet = write_packet, | |||
@@ -262,7 +262,7 @@ static int flic_read_packet(AVFormatContext *s, | |||
AVInputFormat ff_flic_demuxer = { | |||
.name = "flic", | |||
.long_name = NULL_IF_CONFIG_SMALL("FLI/FLC/FLX animation format"), | |||
.long_name = NULL_IF_CONFIG_SMALL("FLI/FLC/FLX animation"), | |||
.priv_data_size = sizeof(FlicDemuxContext), | |||
.read_probe = flic_probe, | |||
.read_header = flic_read_header, | |||
@@ -37,7 +37,7 @@ static int framecrc_write_packet(struct AVFormatContext *s, AVPacket *pkt) | |||
AVOutputFormat ff_framecrc_muxer = { | |||
.name = "framecrc", | |||
.long_name = NULL_IF_CONFIG_SMALL("framecrc testing format"), | |||
.long_name = NULL_IF_CONFIG_SMALL("framecrc testing"), | |||
.audio_codec = CODEC_ID_PCM_S16LE, | |||
.video_codec = CODEC_ID_RAWVIDEO, | |||
.write_header = ff_framehash_write_header, | |||
@@ -77,7 +77,7 @@ static int g723_1_read_packet(AVFormatContext *s, AVPacket *pkt) | |||
AVInputFormat ff_g723_1_demuxer = { | |||
.name = "g723_1", | |||
.long_name = NULL_IF_CONFIG_SMALL("G.723.1 format"), | |||
.long_name = NULL_IF_CONFIG_SMALL("G.723.1"), | |||
.read_header = g723_1_init, | |||
.read_packet = g723_1_read_packet, | |||
.extensions = "tco,rco,g723_1", | |||
@@ -67,4 +67,4 @@ static int h264_probe(AVProbeData *p) | |||
return 0; | |||
} | |||
FF_DEF_RAWVIDEO_DEMUXER(h264 , "raw H.264 video format", h264_probe, "h26l,h264,264", CODEC_ID_H264) | |||
FF_DEF_RAWVIDEO_DEMUXER(h264 , "raw H.264 video", h264_probe, "h26l,h264,264", CODEC_ID_H264) |
@@ -749,7 +749,7 @@ static int hls_probe(AVProbeData *p) | |||
AVInputFormat ff_hls_demuxer = { | |||
.name = "hls,applehttp", | |||
.long_name = NULL_IF_CONFIG_SMALL("Apple HTTP Live Streaming format"), | |||
.long_name = NULL_IF_CONFIG_SMALL("Apple HTTP Live Streaming"), | |||
.priv_data_size = sizeof(HLSContext), | |||
.read_probe = hls_probe, | |||
.read_header = hls_read_header, | |||
@@ -295,7 +295,7 @@ static int idcin_read_packet(AVFormatContext *s, | |||
AVInputFormat ff_idcin_demuxer = { | |||
.name = "idcin", | |||
.long_name = NULL_IF_CONFIG_SMALL("id Cinematic format"), | |||
.long_name = NULL_IF_CONFIG_SMALL("id Cinematic"), | |||
.priv_data_size = sizeof(IdcinDemuxContext), | |||
.read_probe = idcin_probe, | |||
.read_header = idcin_read_header, | |||
@@ -221,7 +221,7 @@ static int roq_read_packet(AVFormatContext *s, | |||
AVInputFormat ff_roq_demuxer = { | |||
.name = "roq", | |||
.long_name = NULL_IF_CONFIG_SMALL("id RoQ format"), | |||
.long_name = NULL_IF_CONFIG_SMALL("id RoQ"), | |||
.priv_data_size = sizeof(RoqDemuxContext), | |||
.read_probe = roq_probe, | |||
.read_header = roq_read_header, | |||
@@ -37,7 +37,7 @@ static int roq_write_header(struct AVFormatContext *s) | |||
AVOutputFormat ff_roq_muxer = { | |||
.name = "roq", | |||
.long_name = NULL_IF_CONFIG_SMALL("raw id RoQ format"), | |||
.long_name = NULL_IF_CONFIG_SMALL("raw id RoQ"), | |||
.extensions = "roq", | |||
.audio_codec = CODEC_ID_ROQ_DPCM, | |||
.video_codec = CODEC_ID_ROQ, | |||
@@ -122,7 +122,7 @@ static int ilbc_read_packet(AVFormatContext *s, | |||
AVInputFormat ff_ilbc_demuxer = { | |||
.name = "ilbc", | |||
.long_name = NULL_IF_CONFIG_SMALL("iLBC storage file format"), | |||
.long_name = NULL_IF_CONFIG_SMALL("iLBC storage"), | |||
.read_probe = ilbc_probe, | |||
.read_header = ilbc_read_header, | |||
.read_packet = ilbc_read_packet, | |||
@@ -131,7 +131,7 @@ AVInputFormat ff_ilbc_demuxer = { | |||
AVOutputFormat ff_ilbc_muxer = { | |||
.name = "ilbc", | |||
.long_name = NULL_IF_CONFIG_SMALL("iLBC storage file format"), | |||
.long_name = NULL_IF_CONFIG_SMALL("iLBC storage"), | |||
.mime_type = "audio/iLBC", | |||
.extensions = "lbc", | |||
.audio_codec = CODEC_ID_ILBC, | |||
@@ -645,7 +645,7 @@ static int ipmovie_read_packet(AVFormatContext *s, | |||
AVInputFormat ff_ipmovie_demuxer = { | |||
.name = "ipmovie", | |||
.long_name = NULL_IF_CONFIG_SMALL("Interplay MVE format"), | |||
.long_name = NULL_IF_CONFIG_SMALL("Interplay MVE"), | |||
.priv_data_size = sizeof(IPMVEContext), | |||
.read_probe = ipmovie_probe, | |||
.read_header = ipmovie_read_header, | |||
@@ -129,7 +129,7 @@ static int iss_read_packet(AVFormatContext *s, AVPacket *pkt) | |||
AVInputFormat ff_iss_demuxer = { | |||
.name = "iss", | |||
.long_name = NULL_IF_CONFIG_SMALL("Funcom ISS format"), | |||
.long_name = NULL_IF_CONFIG_SMALL("Funcom ISS"), | |||
.priv_data_size = sizeof(IssDemuxContext), | |||
.read_probe = iss_probe, | |||
.read_header = iss_read_header, | |||
@@ -120,7 +120,7 @@ static int lmlm4_read_packet(AVFormatContext *s, AVPacket *pkt) { | |||
AVInputFormat ff_lmlm4_demuxer = { | |||
.name = "lmlm4", | |||
.long_name = NULL_IF_CONFIG_SMALL("lmlm4 raw format"), | |||
.long_name = NULL_IF_CONFIG_SMALL("raw lmlm4"), | |||
.read_probe = lmlm4_probe, | |||
.read_header = lmlm4_read_header, | |||
.read_packet = lmlm4_read_packet, | |||
@@ -365,7 +365,7 @@ static int lxf_read_packet(AVFormatContext *s, AVPacket *pkt) | |||
AVInputFormat ff_lxf_demuxer = { | |||
.name = "lxf", | |||
.long_name = NULL_IF_CONFIG_SMALL("VR native stream format (LXF)"), | |||
.long_name = NULL_IF_CONFIG_SMALL("VR native stream (LXF)"), | |||
.priv_data_size = sizeof(LXFDemuxContext), | |||
.read_probe = lxf_probe, | |||
.read_header = lxf_read_header, | |||
@@ -49,4 +49,4 @@ static int mpeg4video_probe(AVProbeData *probe_packet) | |||
return 0; | |||
} | |||
FF_DEF_RAWVIDEO_DEMUXER(m4v, "raw MPEG-4 video format", mpeg4video_probe, "m4v", CODEC_ID_MPEG4) | |||
FF_DEF_RAWVIDEO_DEMUXER(m4v, "raw MPEG-4 video", mpeg4video_probe, "m4v", CODEC_ID_MPEG4) |
@@ -2305,7 +2305,7 @@ static int matroska_read_close(AVFormatContext *s) | |||
AVInputFormat ff_matroska_demuxer = { | |||
.name = "matroska,webm", | |||
.long_name = NULL_IF_CONFIG_SMALL("Matroska/WebM file format"), | |||
.long_name = NULL_IF_CONFIG_SMALL("Matroska / WebM"), | |||
.priv_data_size = sizeof(MatroskaDemuxContext), | |||
.read_probe = matroska_probe, | |||
.read_header = matroska_read_header, | |||
@@ -1307,7 +1307,7 @@ static int mkv_query_codec(enum CodecID codec_id, int std_compliance) | |||
#if CONFIG_MATROSKA_MUXER | |||
AVOutputFormat ff_matroska_muxer = { | |||
.name = "matroska", | |||
.long_name = NULL_IF_CONFIG_SMALL("Matroska file format"), | |||
.long_name = NULL_IF_CONFIG_SMALL("Matroska"), | |||
.mime_type = "video/x-matroska", | |||
.extensions = "mkv", | |||
.priv_data_size = sizeof(MatroskaMuxContext), | |||
@@ -1328,7 +1328,7 @@ AVOutputFormat ff_matroska_muxer = { | |||
#if CONFIG_WEBM_MUXER | |||
AVOutputFormat ff_webm_muxer = { | |||
.name = "webm", | |||
.long_name = NULL_IF_CONFIG_SMALL("WebM file format"), | |||
.long_name = NULL_IF_CONFIG_SMALL("WebM"), | |||
.mime_type = "video/webm", | |||
.extensions = "webm", | |||
.priv_data_size = sizeof(MatroskaMuxContext), | |||
@@ -1345,7 +1345,7 @@ AVOutputFormat ff_webm_muxer = { | |||
#if CONFIG_MATROSKA_AUDIO_MUXER | |||
AVOutputFormat ff_matroska_audio_muxer = { | |||
.name = "matroska", | |||
.long_name = NULL_IF_CONFIG_SMALL("Matroska file format"), | |||
.long_name = NULL_IF_CONFIG_SMALL("Matroska"), | |||
.mime_type = "audio/x-matroska", | |||
.extensions = "mka", | |||
.priv_data_size = sizeof(MatroskaMuxContext), | |||
@@ -68,7 +68,7 @@ static int write_trailer(struct AVFormatContext *s) | |||
AVOutputFormat ff_md5_muxer = { | |||
.name = "md5", | |||
.long_name = NULL_IF_CONFIG_SMALL("MD5 testing format"), | |||
.long_name = NULL_IF_CONFIG_SMALL("MD5 testing"), | |||
.priv_data_size = PRIVSIZE, | |||
.audio_codec = CODEC_ID_PCM_S16LE, | |||
.video_codec = CODEC_ID_RAWVIDEO, | |||
@@ -98,7 +98,7 @@ static int framemd5_write_packet(struct AVFormatContext *s, AVPacket *pkt) | |||
AVOutputFormat ff_framemd5_muxer = { | |||
.name = "framemd5", | |||
.long_name = NULL_IF_CONFIG_SMALL("Per-frame MD5 testing format"), | |||
.long_name = NULL_IF_CONFIG_SMALL("Per-frame MD5 testing"), | |||
.priv_data_size = PRIVSIZE, | |||
.audio_codec = CODEC_ID_PCM_S16LE, | |||
.video_codec = CODEC_ID_RAWVIDEO, | |||
@@ -187,7 +187,7 @@ static int read_packet(AVFormatContext *s, | |||
AVInputFormat ff_mm_demuxer = { | |||
.name = "mm", | |||
.long_name = NULL_IF_CONFIG_SMALL("American Laser Games MM format"), | |||
.long_name = NULL_IF_CONFIG_SMALL("American Laser Games MM"), | |||
.priv_data_size = sizeof(MmDemuxContext), | |||
.read_probe = probe, | |||
.read_header = read_header, | |||
@@ -3691,7 +3691,7 @@ AVOutputFormat ff_ipod_muxer = { | |||
MOV_CLASS(ismv) | |||
AVOutputFormat ff_ismv_muxer = { | |||
.name = "ismv", | |||
.long_name = NULL_IF_CONFIG_SMALL("ISMV/ISMA (Smooth Streaming) format"), | |||
.long_name = NULL_IF_CONFIG_SMALL("ISMV/ISMA (Smooth Streaming)"), | |||
.mime_type = "application/mp4", | |||
.extensions = "ismv,isma", | |||
.priv_data_size = sizeof(MOVMuxContext), | |||
@@ -1178,7 +1178,7 @@ AVOutputFormat ff_mpeg1vcd_muxer = { | |||
MPEGENC_CLASS(vob) | |||
AVOutputFormat ff_mpeg2vob_muxer = { | |||
.name = "vob", | |||
.long_name = NULL_IF_CONFIG_SMALL("MPEG-2 PS format (VOB)"), | |||
.long_name = NULL_IF_CONFIG_SMALL("MPEG-2 PS (VOB)"), | |||
.mime_type = "video/mpeg", | |||
.extensions = "vob", | |||
.priv_data_size = sizeof(MpegMuxContext), | |||
@@ -1214,7 +1214,7 @@ AVOutputFormat ff_mpeg2svcd_muxer = { | |||
MPEGENC_CLASS(dvd) | |||
AVOutputFormat ff_mpeg2dvd_muxer = { | |||
.name = "dvd", | |||
.long_name = NULL_IF_CONFIG_SMALL("MPEG-2 PS format (DVD VOB)"), | |||
.long_name = NULL_IF_CONFIG_SMALL("MPEG-2 PS (DVD VOB)"), | |||
.mime_type = "video/mpeg", | |||
.extensions = "dvd", | |||
.priv_data_size = sizeof(MpegMuxContext), | |||
@@ -58,7 +58,7 @@ static int mpjpeg_write_trailer(AVFormatContext *s) | |||
AVOutputFormat ff_mpjpeg_muxer = { | |||
.name = "mpjpeg", | |||
.long_name = NULL_IF_CONFIG_SMALL("MIME multipart JPEG format"), | |||
.long_name = NULL_IF_CONFIG_SMALL("MIME multipart JPEG"), | |||
.mime_type = "multipart/x-mixed-replace;boundary=" BOUNDARY_TAG, | |||
.extensions = "mjpg", | |||
.audio_codec = CODEC_ID_NONE, | |||
@@ -195,7 +195,7 @@ static int mtv_read_packet(AVFormatContext *s, AVPacket *pkt) | |||
AVInputFormat ff_mtv_demuxer = { | |||
.name = "mtv", | |||
.long_name = NULL_IF_CONFIG_SMALL("MTV format"), | |||
.long_name = NULL_IF_CONFIG_SMALL("MTV"), | |||
.priv_data_size = sizeof(MTVDemuxContext), | |||
.read_probe = mtv_probe, | |||
.read_header = mtv_read_header, | |||
@@ -126,7 +126,7 @@ static int read_packet(AVFormatContext *s, AVPacket *pkt) | |||
AVInputFormat ff_mvi_demuxer = { | |||
.name = "mvi", | |||
.long_name = NULL_IF_CONFIG_SMALL("Motion Pixels MVI format"), | |||
.long_name = NULL_IF_CONFIG_SMALL("Motion Pixels MVI"), | |||
.priv_data_size = sizeof(MviDemuxContext), | |||
.read_header = read_header, | |||
.read_packet = read_packet, | |||
@@ -241,7 +241,7 @@ static int mxg_close(struct AVFormatContext *s) | |||
AVInputFormat ff_mxg_demuxer = { | |||
.name = "mxg", | |||
.long_name = NULL_IF_CONFIG_SMALL("MxPEG clip file format"), | |||
.long_name = NULL_IF_CONFIG_SMALL("MxPEG clip"), | |||
.priv_data_size = sizeof(MXGContext), | |||
.read_header = mxg_read_header, | |||
.read_packet = mxg_read_packet, | |||
@@ -93,7 +93,7 @@ static int nc_read_packet(AVFormatContext *s, AVPacket *pkt) | |||
AVInputFormat ff_nc_demuxer = { | |||
.name = "nc", | |||
.long_name = NULL_IF_CONFIG_SMALL("NC camera feed format"), | |||
.long_name = NULL_IF_CONFIG_SMALL("NC camera feed"), | |||
.read_probe = nc_probe, | |||
.read_header = nc_read_header, | |||
.read_packet = nc_read_packet, | |||
@@ -28,7 +28,7 @@ static int null_write_packet(struct AVFormatContext *s, AVPacket *pkt) | |||
AVOutputFormat ff_null_muxer = { | |||
.name = "null", | |||
.long_name = NULL_IF_CONFIG_SMALL("raw null video format"), | |||
.long_name = NULL_IF_CONFIG_SMALL("raw null video"), | |||
.audio_codec = AV_NE(CODEC_ID_PCM_S16BE, CODEC_ID_PCM_S16LE), | |||
.video_codec = CODEC_ID_RAWVIDEO, | |||
.write_packet = null_write_packet, | |||
@@ -1014,7 +1014,7 @@ static int nut_read_close(AVFormatContext *s) | |||
AVInputFormat ff_nut_demuxer = { | |||
.name = "nut", | |||
.long_name = NULL_IF_CONFIG_SMALL("NUT format"), | |||
.long_name = NULL_IF_CONFIG_SMALL("NUT"), | |||
.flags = AVFMT_SEEK_TO_PTS, | |||
.priv_data_size = sizeof(NUTContext), | |||
.read_probe = nut_probe, | |||
@@ -866,7 +866,7 @@ static int nut_write_trailer(AVFormatContext *s){ | |||
AVOutputFormat ff_nut_muxer = { | |||
.name = "nut", | |||
.long_name = NULL_IF_CONFIG_SMALL("NUT format"), | |||
.long_name = NULL_IF_CONFIG_SMALL("NUT"), | |||
.mime_type = "video/x-nut", | |||
.extensions = "nut", | |||
.priv_data_size = sizeof(NUTContext), | |||
@@ -338,7 +338,7 @@ static int64_t nuv_read_dts(AVFormatContext *s, int stream_index, | |||
AVInputFormat ff_nuv_demuxer = { | |||
.name = "nuv", | |||
.long_name = NULL_IF_CONFIG_SMALL("NuppelVideo format"), | |||
.long_name = NULL_IF_CONFIG_SMALL("NuppelVideo"), | |||
.priv_data_size = sizeof(NUVContext), | |||
.read_probe = nuv_probe, | |||
.read_header = nuv_header, | |||
@@ -76,62 +76,62 @@ AVInputFormat ff_pcm_ ## name_ ## _demuxer = { \ | |||
.priv_class = &name_ ## _demuxer_class, \ | |||
}; | |||
PCMDEF(f64be, "PCM 64 bit floating-point big-endian format", | |||
PCMDEF(f64be, "PCM 64-bit floating-point big-endian", | |||
NULL, CODEC_ID_PCM_F64BE) | |||
PCMDEF(f64le, "PCM 64 bit floating-point little-endian format", | |||
PCMDEF(f64le, "PCM 64-bit floating-point little-endian", | |||
NULL, CODEC_ID_PCM_F64LE) | |||
PCMDEF(f32be, "PCM 32 bit floating-point big-endian format", | |||
PCMDEF(f32be, "PCM 32-bit floating-point big-endian", | |||
NULL, CODEC_ID_PCM_F32BE) | |||
PCMDEF(f32le, "PCM 32 bit floating-point little-endian format", | |||
PCMDEF(f32le, "PCM 32-bit floating-point little-endian", | |||
NULL, CODEC_ID_PCM_F32LE) | |||
PCMDEF(s32be, "PCM signed 32 bit big-endian format", | |||
PCMDEF(s32be, "PCM signed 32-bit big-endian", | |||
NULL, CODEC_ID_PCM_S32BE) | |||
PCMDEF(s32le, "PCM signed 32 bit little-endian format", | |||
PCMDEF(s32le, "PCM signed 32-bit little-endian", | |||
NULL, CODEC_ID_PCM_S32LE) | |||
PCMDEF(s24be, "PCM signed 24 bit big-endian format", | |||
PCMDEF(s24be, "PCM signed 24-bit big-endian", | |||
NULL, CODEC_ID_PCM_S24BE) | |||
PCMDEF(s24le, "PCM signed 24 bit little-endian format", | |||
PCMDEF(s24le, "PCM signed 24-bit little-endian", | |||
NULL, CODEC_ID_PCM_S24LE) | |||
PCMDEF(s16be, "PCM signed 16 bit big-endian format", | |||
PCMDEF(s16be, "PCM signed 16-bit big-endian", | |||
AV_NE("sw", NULL), CODEC_ID_PCM_S16BE) | |||
PCMDEF(s16le, "PCM signed 16 bit little-endian format", | |||
PCMDEF(s16le, "PCM signed 16-bit little-endian", | |||
AV_NE(NULL, "sw"), CODEC_ID_PCM_S16LE) | |||
PCMDEF(s8, "PCM signed 8 bit format", | |||
PCMDEF(s8, "PCM signed 8-bit", | |||
"sb", CODEC_ID_PCM_S8) | |||
PCMDEF(u32be, "PCM unsigned 32 bit big-endian format", | |||
PCMDEF(u32be, "PCM unsigned 32-bit big-endian", | |||
NULL, CODEC_ID_PCM_U32BE) | |||
PCMDEF(u32le, "PCM unsigned 32 bit little-endian format", | |||
PCMDEF(u32le, "PCM unsigned 32-bit little-endian", | |||
NULL, CODEC_ID_PCM_U32LE) | |||
PCMDEF(u24be, "PCM unsigned 24 bit big-endian format", | |||
PCMDEF(u24be, "PCM unsigned 24-bit big-endian", | |||
NULL, CODEC_ID_PCM_U24BE) | |||
PCMDEF(u24le, "PCM unsigned 24 bit little-endian format", | |||
PCMDEF(u24le, "PCM unsigned 24-bit little-endian", | |||
NULL, CODEC_ID_PCM_U24LE) | |||
PCMDEF(u16be, "PCM unsigned 16 bit big-endian format", | |||
PCMDEF(u16be, "PCM unsigned 16-bit big-endian", | |||
AV_NE("uw", NULL), CODEC_ID_PCM_U16BE) | |||
PCMDEF(u16le, "PCM unsigned 16 bit little-endian format", | |||
PCMDEF(u16le, "PCM unsigned 16-bit little-endian", | |||
AV_NE(NULL, "uw"), CODEC_ID_PCM_U16LE) | |||
PCMDEF(u8, "PCM unsigned 8 bit format", | |||
PCMDEF(u8, "PCM unsigned 8-bit", | |||
"ub", CODEC_ID_PCM_U8) | |||
PCMDEF(alaw, "PCM A-law format", | |||
PCMDEF(alaw, "PCM A-law", | |||
"al", CODEC_ID_PCM_ALAW) | |||
PCMDEF(mulaw, "PCM mu-law format", | |||
PCMDEF(mulaw, "PCM mu-law", | |||
"ul", CODEC_ID_PCM_MULAW) |
@@ -33,62 +33,62 @@ AVOutputFormat ff_pcm_ ## name_ ## _muxer = { \ | |||
.flags = AVFMT_NOTIMESTAMPS, \ | |||
}; | |||
PCMDEF(f64be, "PCM 64 bit floating-point big-endian format", | |||
PCMDEF(f64be, "PCM 64-bit floating-point big-endian", | |||
NULL, CODEC_ID_PCM_F64BE) | |||
PCMDEF(f64le, "PCM 64 bit floating-point little-endian format", | |||
PCMDEF(f64le, "PCM 64-bit floating-point little-endian", | |||
NULL, CODEC_ID_PCM_F64LE) | |||
PCMDEF(f32be, "PCM 32 bit floating-point big-endian format", | |||
PCMDEF(f32be, "PCM 32-bit floating-point big-endian", | |||
NULL, CODEC_ID_PCM_F32BE) | |||
PCMDEF(f32le, "PCM 32 bit floating-point little-endian format", | |||
PCMDEF(f32le, "PCM 32-bit floating-point little-endian", | |||
NULL, CODEC_ID_PCM_F32LE) | |||
PCMDEF(s32be, "PCM signed 32 bit big-endian format", | |||
PCMDEF(s32be, "PCM signed 32-bit big-endian", | |||
NULL, CODEC_ID_PCM_S32BE) | |||
PCMDEF(s32le, "PCM signed 32 bit little-endian format", | |||
PCMDEF(s32le, "PCM signed 32-bit little-endian", | |||
NULL, CODEC_ID_PCM_S32LE) | |||
PCMDEF(s24be, "PCM signed 24 bit big-endian format", | |||
PCMDEF(s24be, "PCM signed 24-bit big-endian", | |||
NULL, CODEC_ID_PCM_S24BE) | |||
PCMDEF(s24le, "PCM signed 24 bit little-endian format", | |||
PCMDEF(s24le, "PCM signed 24-bit little-endian", | |||
NULL, CODEC_ID_PCM_S24LE) | |||
PCMDEF(s16be, "PCM signed 16 bit big-endian format", | |||
PCMDEF(s16be, "PCM signed 16-bit big-endian", | |||
AV_NE("sw", NULL), CODEC_ID_PCM_S16BE) | |||
PCMDEF(s16le, "PCM signed 16 bit little-endian format", | |||
PCMDEF(s16le, "PCM signed 16-bit little-endian", | |||
AV_NE(NULL, "sw"), CODEC_ID_PCM_S16LE) | |||
PCMDEF(s8, "PCM signed 8 bit format", | |||
PCMDEF(s8, "PCM signed 8-bit", | |||
"sb", CODEC_ID_PCM_S8) | |||
PCMDEF(u32be, "PCM unsigned 32 bit big-endian format", | |||
PCMDEF(u32be, "PCM unsigned 32-bit big-endian", | |||
NULL, CODEC_ID_PCM_U32BE) | |||
PCMDEF(u32le, "PCM unsigned 32 bit little-endian format", | |||
PCMDEF(u32le, "PCM unsigned 32-bit little-endian", | |||
NULL, CODEC_ID_PCM_U32LE) | |||
PCMDEF(u24be, "PCM unsigned 24 bit big-endian format", | |||
PCMDEF(u24be, "PCM unsigned 24-bit big-endian", | |||
NULL, CODEC_ID_PCM_U24BE) | |||
PCMDEF(u24le, "PCM unsigned 24 bit little-endian format", | |||
PCMDEF(u24le, "PCM unsigned 24-bit little-endian", | |||
NULL, CODEC_ID_PCM_U24LE) | |||
PCMDEF(u16be, "PCM unsigned 16 bit big-endian format", | |||
PCMDEF(u16be, "PCM unsigned 16-bit big-endian", | |||
AV_NE("uw", NULL), CODEC_ID_PCM_U16BE) | |||
PCMDEF(u16le, "PCM unsigned 16 bit little-endian format", | |||
PCMDEF(u16le, "PCM unsigned 16-bit little-endian", | |||
AV_NE(NULL, "uw"), CODEC_ID_PCM_U16LE) | |||
PCMDEF(u8, "PCM unsigned 8 bit format", | |||
PCMDEF(u8, "PCM unsigned 8-bit", | |||
"ub", CODEC_ID_PCM_U8) | |||
PCMDEF(alaw, "PCM A-law format", | |||
PCMDEF(alaw, "PCM A-law", | |||
"al", CODEC_ID_PCM_ALAW) | |||
PCMDEF(mulaw, "PCM mu-law format", | |||
PCMDEF(mulaw, "PCM mu-law", | |||
"ul", CODEC_ID_PCM_MULAW) |
@@ -173,7 +173,7 @@ static int pmp_close(AVFormatContext *s) | |||
AVInputFormat ff_pmp_demuxer = { | |||
.name = "pmp", | |||
.long_name = NULL_IF_CONFIG_SMALL("Playstation Portable PMP format"), | |||
.long_name = NULL_IF_CONFIG_SMALL("Playstation Portable PMP"), | |||
.priv_data_size = sizeof(PMPContext), | |||
.read_probe = pmp_probe, | |||
.read_header = pmp_header, | |||
@@ -296,7 +296,7 @@ static int str_read_close(AVFormatContext *s) | |||
AVInputFormat ff_str_demuxer = { | |||
.name = "psxstr", | |||
.long_name = NULL_IF_CONFIG_SMALL("Sony Playstation STR format"), | |||
.long_name = NULL_IF_CONFIG_SMALL("Sony Playstation STR"), | |||
.priv_data_size = sizeof(StrDemuxContext), | |||
.read_probe = str_probe, | |||
.read_header = str_read_header, | |||
@@ -216,7 +216,7 @@ static int64_t pva_read_timestamp(struct AVFormatContext *s, int stream_index, | |||
AVInputFormat ff_pva_demuxer = { | |||
.name = "pva", | |||
.long_name = NULL_IF_CONFIG_SMALL("TechnoTrend PVA file and stream format"), | |||
.long_name = NULL_IF_CONFIG_SMALL("TechnoTrend PVA"), | |||
.priv_data_size = sizeof(PVAContext), | |||
.read_probe = pva_probe, | |||
.read_header = pva_read_header, | |||
@@ -188,7 +188,7 @@ static int qcp_read_packet(AVFormatContext *s, AVPacket *pkt) | |||
AVInputFormat ff_qcp_demuxer = { | |||
.name = "qcp", | |||
.long_name = NULL_IF_CONFIG_SMALL("QCP format"), | |||
.long_name = NULL_IF_CONFIG_SMALL("QCP"), | |||
.priv_data_size = sizeof(QCPContext), | |||
.read_probe = qcp_probe, | |||
.read_header = qcp_read_header, | |||
@@ -396,7 +396,7 @@ static int r3d_close(AVFormatContext *s) | |||
AVInputFormat ff_r3d_demuxer = { | |||
.name = "r3d", | |||
.long_name = NULL_IF_CONFIG_SMALL("REDCODE R3D format"), | |||
.long_name = NULL_IF_CONFIG_SMALL("REDCODE R3D"), | |||
.priv_data_size = sizeof(R3DContext), | |||
.read_probe = r3d_probe, | |||
.read_header = r3d_read_header, | |||
@@ -174,7 +174,7 @@ AVOutputFormat ff_h263_muxer = { | |||
#if CONFIG_H264_MUXER | |||
AVOutputFormat ff_h264_muxer = { | |||
.name = "h264", | |||
.long_name = NULL_IF_CONFIG_SMALL("raw H.264 video format"), | |||
.long_name = NULL_IF_CONFIG_SMALL("raw H.264 video"), | |||
.extensions = "h264", | |||
.audio_codec = CODEC_ID_NONE, | |||
.video_codec = CODEC_ID_H264, | |||
@@ -186,7 +186,7 @@ AVOutputFormat ff_h264_muxer = { | |||
#if CONFIG_M4V_MUXER | |||
AVOutputFormat ff_m4v_muxer = { | |||
.name = "m4v", | |||
.long_name = NULL_IF_CONFIG_SMALL("raw MPEG-4 video format"), | |||
.long_name = NULL_IF_CONFIG_SMALL("raw MPEG-4 video"), | |||
.extensions = "m4v", | |||
.audio_codec = CODEC_ID_NONE, | |||
.video_codec = CODEC_ID_MPEG4, | |||
@@ -248,7 +248,7 @@ AVOutputFormat ff_mpeg2video_muxer = { | |||
#if CONFIG_RAWVIDEO_MUXER | |||
AVOutputFormat ff_rawvideo_muxer = { | |||
.name = "rawvideo", | |||
.long_name = NULL_IF_CONFIG_SMALL("raw video format"), | |||
.long_name = NULL_IF_CONFIG_SMALL("raw video"), | |||
.extensions = "yuv,rgb", | |||
.audio_codec = CODEC_ID_NONE, | |||
.video_codec = CODEC_ID_RAWVIDEO, | |||
@@ -62,7 +62,7 @@ static const AVClass rawvideo_demuxer_class = { | |||
AVInputFormat ff_rawvideo_demuxer = { | |||
.name = "rawvideo", | |||
.long_name = NULL_IF_CONFIG_SMALL("raw video format"), | |||
.long_name = NULL_IF_CONFIG_SMALL("raw video"), | |||
.priv_data_size = sizeof(FFRawVideoDemuxerContext), | |||
.read_header = ff_raw_read_header, | |||
.read_packet = rawvideo_read_packet, | |||
@@ -289,7 +289,7 @@ static int rl2_read_seek(AVFormatContext *s, int stream_index, int64_t timestamp | |||
AVInputFormat ff_rl2_demuxer = { | |||
.name = "rl2", | |||
.long_name = NULL_IF_CONFIG_SMALL("RL2 format"), | |||
.long_name = NULL_IF_CONFIG_SMALL("RL2"), | |||
.priv_data_size = sizeof(Rl2DemuxContext), | |||
.read_probe = rl2_probe, | |||
.read_header = rl2_read_header, | |||
@@ -989,7 +989,7 @@ static int64_t rm_read_dts(AVFormatContext *s, int stream_index, | |||
AVInputFormat ff_rm_demuxer = { | |||
.name = "rm", | |||
.long_name = NULL_IF_CONFIG_SMALL("RealMedia format"), | |||
.long_name = NULL_IF_CONFIG_SMALL("RealMedia"), | |||
.priv_data_size = sizeof(RMDemuxContext), | |||
.read_probe = rm_probe, | |||
.read_header = rm_read_header, | |||
@@ -467,7 +467,7 @@ static int rm_write_trailer(AVFormatContext *s) | |||
AVOutputFormat ff_rm_muxer = { | |||
.name = "rm", | |||
.long_name = NULL_IF_CONFIG_SMALL("RealMedia format"), | |||
.long_name = NULL_IF_CONFIG_SMALL("RealMedia"), | |||
.mime_type = "application/vnd.rn-realmedia", | |||
.extensions = "rm,ra", | |||
.priv_data_size = sizeof(RMMuxContext), | |||
@@ -351,7 +351,7 @@ static int rpl_read_packet(AVFormatContext *s, AVPacket *pkt) | |||
AVInputFormat ff_rpl_demuxer = { | |||
.name = "rpl", | |||
.long_name = NULL_IF_CONFIG_SMALL("RPL/ARMovie format"), | |||
.long_name = NULL_IF_CONFIG_SMALL("RPL / ARMovie"), | |||
.priv_data_size = sizeof(RPLContext), | |||
.read_probe = rpl_probe, | |||
.read_header = rpl_read_header, | |||
@@ -88,7 +88,7 @@ static int rso_read_packet(AVFormatContext *s, AVPacket *pkt) | |||
AVInputFormat ff_rso_demuxer = { | |||
.name = "rso", | |||
.long_name = NULL_IF_CONFIG_SMALL("Lego Mindstorms RSO format"), | |||
.long_name = NULL_IF_CONFIG_SMALL("Lego Mindstorms RSO"), | |||
.extensions = "rso", | |||
.read_header = rso_read_header, | |||
.read_packet = rso_read_packet, | |||
@@ -102,7 +102,7 @@ static int rso_write_trailer(AVFormatContext *s) | |||
AVOutputFormat ff_rso_muxer = { | |||
.name = "rso", | |||
.long_name = NULL_IF_CONFIG_SMALL("Lego Mindstorms RSO format"), | |||
.long_name = NULL_IF_CONFIG_SMALL("Lego Mindstorms RSO"), | |||
.extensions = "rso", | |||
.audio_codec = CODEC_ID_PCM_U8, | |||
.video_codec = CODEC_ID_NONE, | |||
@@ -546,7 +546,7 @@ static int rtp_write_trailer(AVFormatContext *s1) | |||
AVOutputFormat ff_rtp_muxer = { | |||
.name = "rtp", | |||
.long_name = NULL_IF_CONFIG_SMALL("RTP output format"), | |||
.long_name = NULL_IF_CONFIG_SMALL("RTP output"), | |||
.priv_data_size = sizeof(RTPMuxContext), | |||
.audio_codec = CODEC_ID_PCM_MULAW, | |||
.video_codec = CODEC_ID_MPEG4, | |||
@@ -2076,7 +2076,7 @@ static const AVClass rtp_demuxer_class = { | |||
AVInputFormat ff_rtp_demuxer = { | |||
.name = "rtp", | |||
.long_name = NULL_IF_CONFIG_SMALL("RTP input format"), | |||
.long_name = NULL_IF_CONFIG_SMALL("RTP input"), | |||
.priv_data_size = sizeof(RTSPState), | |||
.read_probe = rtp_probe, | |||
.read_header = rtp_read_header, | |||
@@ -919,7 +919,7 @@ static const AVClass rtsp_demuxer_class = { | |||
AVInputFormat ff_rtsp_demuxer = { | |||
.name = "rtsp", | |||
.long_name = NULL_IF_CONFIG_SMALL("RTSP input format"), | |||
.long_name = NULL_IF_CONFIG_SMALL("RTSP input"), | |||
.priv_data_size = sizeof(RTSPState), | |||
.read_probe = rtsp_probe, | |||
.read_header = rtsp_read_header, | |||
@@ -235,7 +235,7 @@ static int rtsp_write_close(AVFormatContext *s) | |||
AVOutputFormat ff_rtsp_muxer = { | |||
.name = "rtsp", | |||
.long_name = NULL_IF_CONFIG_SMALL("RTSP output format"), | |||
.long_name = NULL_IF_CONFIG_SMALL("RTSP output"), | |||
.priv_data_size = sizeof(RTSPState), | |||
.audio_codec = CODEC_ID_AAC, | |||
.video_codec = CODEC_ID_MPEG4, | |||
@@ -227,7 +227,7 @@ static int sap_fetch_packet(AVFormatContext *s, AVPacket *pkt) | |||
AVInputFormat ff_sap_demuxer = { | |||
.name = "sap", | |||
.long_name = NULL_IF_CONFIG_SMALL("SAP input format"), | |||
.long_name = NULL_IF_CONFIG_SMALL("SAP input"), | |||
.priv_data_size = sizeof(struct SAPState), | |||
.read_probe = sap_probe, | |||
.read_header = sap_read_header, | |||
@@ -254,7 +254,7 @@ static int sap_write_packet(AVFormatContext *s, AVPacket *pkt) | |||
AVOutputFormat ff_sap_muxer = { | |||
.name = "sap", | |||
.long_name = NULL_IF_CONFIG_SMALL("SAP output format"), | |||
.long_name = NULL_IF_CONFIG_SMALL("SAP output"), | |||
.priv_data_size = sizeof(struct SAPState), | |||
.audio_codec = CODEC_ID_AAC, | |||
.video_codec = CODEC_ID_MPEG4, | |||
@@ -327,7 +327,7 @@ static int film_read_close(AVFormatContext *s) | |||
AVInputFormat ff_segafilm_demuxer = { | |||
.name = "film_cpk", | |||
.long_name = NULL_IF_CONFIG_SMALL("Sega FILM/CPK format"), | |||
.long_name = NULL_IF_CONFIG_SMALL("Sega FILM / CPK"), | |||
.priv_data_size = sizeof(FilmDemuxContext), | |||
.read_probe = film_probe, | |||
.read_header = film_read_header, | |||
@@ -285,7 +285,7 @@ static int vmd_read_close(AVFormatContext *s) | |||
AVInputFormat ff_vmd_demuxer = { | |||
.name = "vmd", | |||
.long_name = NULL_IF_CONFIG_SMALL("Sierra VMD format"), | |||
.long_name = NULL_IF_CONFIG_SMALL("Sierra VMD"), | |||
.priv_data_size = sizeof(VmdDemuxContext), | |||
.read_probe = vmd_probe, | |||
.read_header = vmd_read_header, | |||
@@ -140,7 +140,7 @@ static int sol_read_packet(AVFormatContext *s, | |||
AVInputFormat ff_sol_demuxer = { | |||
.name = "sol", | |||
.long_name = NULL_IF_CONFIG_SMALL("Sierra SOL format"), | |||
.long_name = NULL_IF_CONFIG_SMALL("Sierra SOL"), | |||
.read_probe = sol_probe, | |||
.read_header = sol_read_header, | |||
.read_packet = sol_read_packet, | |||
@@ -146,7 +146,7 @@ static int sox_read_packet(AVFormatContext *s, | |||
AVInputFormat ff_sox_demuxer = { | |||
.name = "sox", | |||
.long_name = NULL_IF_CONFIG_SMALL("SoX native format"), | |||
.long_name = NULL_IF_CONFIG_SMALL("SoX native"), | |||
.read_probe = sox_probe, | |||
.read_header = sox_read_header, | |||
.read_packet = sox_read_packet, | |||
@@ -117,7 +117,7 @@ static int sox_write_trailer(AVFormatContext *s) | |||
AVOutputFormat ff_sox_muxer = { | |||
.name = "sox", | |||
.long_name = NULL_IF_CONFIG_SMALL("SoX native format"), | |||
.long_name = NULL_IF_CONFIG_SMALL("SoX native"), | |||
.extensions = "sox", | |||
.priv_data_size = sizeof(SoXContext), | |||
.audio_codec = CODEC_ID_PCM_S32LE, | |||
@@ -94,7 +94,7 @@ static int srt_read_packet(AVFormatContext *s, AVPacket *pkt) | |||
AVInputFormat ff_srt_demuxer = { | |||
.name = "srt", | |||
.long_name = NULL_IF_CONFIG_SMALL("SubRip subtitle format"), | |||
.long_name = NULL_IF_CONFIG_SMALL("SubRip subtitle"), | |||
.read_probe = srt_probe, | |||
.read_header = srt_read_header, | |||
.read_packet = srt_read_packet, | |||
@@ -88,7 +88,7 @@ static int srt_write_packet(AVFormatContext *avf, AVPacket *pkt) | |||
AVOutputFormat ff_srt_muxer = { | |||
.name = "srt", | |||
.long_name = NULL_IF_CONFIG_SMALL("SubRip subtitle format"), | |||
.long_name = NULL_IF_CONFIG_SMALL("SubRip subtitle"), | |||
.mime_type = "application/x-subrip", | |||
.extensions = "srt", | |||
.priv_data_size = sizeof(SRTContext), | |||
@@ -306,7 +306,7 @@ static int seq_read_close(AVFormatContext *s) | |||
AVInputFormat ff_tiertexseq_demuxer = { | |||
.name = "tiertexseq", | |||
.long_name = NULL_IF_CONFIG_SMALL("Tiertex Limited SEQ format"), | |||
.long_name = NULL_IF_CONFIG_SMALL("Tiertex Limited SEQ"), | |||
.priv_data_size = sizeof(SeqDemuxContext), | |||
.read_probe = seq_probe, | |||
.read_header = seq_read_header, | |||
@@ -111,7 +111,7 @@ static int vc1t_read_packet(AVFormatContext *s, | |||
AVInputFormat ff_vc1t_demuxer = { | |||
.name = "vc1test", | |||
.long_name = NULL_IF_CONFIG_SMALL("VC-1 test bitstream format"), | |||
.long_name = NULL_IF_CONFIG_SMALL("VC-1 test bitstream"), | |||
.read_probe = vc1t_probe, | |||
.read_header = vc1t_read_header, | |||
.read_packet = vc1t_read_packet, | |||
@@ -166,7 +166,7 @@ static int voc_read_packet(AVFormatContext *s, AVPacket *pkt) | |||
AVInputFormat ff_voc_demuxer = { | |||
.name = "voc", | |||
.long_name = NULL_IF_CONFIG_SMALL("Creative Voice file format"), | |||
.long_name = NULL_IF_CONFIG_SMALL("Creative Voice"), | |||
.priv_data_size = sizeof(VocDecContext), | |||
.read_probe = voc_probe, | |||
.read_header = voc_read_header, | |||
@@ -91,7 +91,7 @@ static int voc_write_trailer(AVFormatContext *s) | |||
AVOutputFormat ff_voc_muxer = { | |||
.name = "voc", | |||
.long_name = NULL_IF_CONFIG_SMALL("Creative Voice file format"), | |||
.long_name = NULL_IF_CONFIG_SMALL("Creative Voice"), | |||
.mime_type = "audio/x-voc", | |||
.extensions = "voc", | |||
.priv_data_size = sizeof(VocEncContext), | |||
@@ -788,7 +788,7 @@ static int w64_read_header(AVFormatContext *s) | |||
AVInputFormat ff_w64_demuxer = { | |||
.name = "w64", | |||
.long_name = NULL_IF_CONFIG_SMALL("Sony Wave64 format"), | |||
.long_name = NULL_IF_CONFIG_SMALL("Sony Wave64"), | |||
.priv_data_size = sizeof(WAVContext), | |||
.read_probe = w64_probe, | |||
.read_header = w64_read_header, | |||
@@ -293,7 +293,7 @@ static int wc3_read_close(AVFormatContext *s) | |||
AVInputFormat ff_wc3_demuxer = { | |||
.name = "wc3movie", | |||
.long_name = NULL_IF_CONFIG_SMALL("Wing Commander III movie format"), | |||
.long_name = NULL_IF_CONFIG_SMALL("Wing Commander III movie"), | |||
.priv_data_size = sizeof(Wc3DemuxContext), | |||
.read_probe = wc3_probe, | |||
.read_header = wc3_read_header, | |||
@@ -173,7 +173,7 @@ static int wsaud_read_packet(AVFormatContext *s, | |||
AVInputFormat ff_wsaud_demuxer = { | |||
.name = "wsaud", | |||
.long_name = NULL_IF_CONFIG_SMALL("Westwood Studios audio format"), | |||
.long_name = NULL_IF_CONFIG_SMALL("Westwood Studios audio"), | |||
.read_probe = wsaud_probe, | |||
.read_header = wsaud_read_header, | |||
.read_packet = wsaud_read_packet, | |||
@@ -268,7 +268,7 @@ static int wsvqa_read_packet(AVFormatContext *s, | |||
AVInputFormat ff_wsvqa_demuxer = { | |||
.name = "wsvqa", | |||
.long_name = NULL_IF_CONFIG_SMALL("Westwood Studios VQA format"), | |||
.long_name = NULL_IF_CONFIG_SMALL("Westwood Studios VQA"), | |||
.priv_data_size = sizeof(WsVqaDemuxContext), | |||
.read_probe = wsvqa_probe, | |||
.read_header = wsvqa_read_header, | |||
@@ -36,7 +36,7 @@ | |||
#define WV_END_BLOCK 0x1000 | |||
#define WV_SINGLE_BLOCK (WV_START_BLOCK | WV_END_BLOCK) | |||
enum WV_FLAGS{ | |||
enum WV_FLAGS { | |||
WV_MONO = 0x0004, | |||
WV_HYBRID = 0x0008, | |||
WV_JOINT = 0x0010, | |||
@@ -51,11 +51,11 @@ enum WV_FLAGS{ | |||
}; | |||
static const int wv_rates[16] = { | |||
6000, 8000, 9600, 11025, 12000, 16000, 22050, 24000, | |||
32000, 44100, 48000, 64000, 88200, 96000, 192000, -1 | |||
6000, 8000, 9600, 11025, 12000, 16000, 22050, 24000, | |||
32000, 44100, 48000, 64000, 88200, 96000, 192000, -1 | |||
}; | |||
typedef struct{ | |||
typedef struct { | |||
uint32_t blksize, flags; | |||
int rate, chan, bpp; | |||
uint32_t chmask; | |||
@@ -64,7 +64,7 @@ typedef struct{ | |||
int block_parsed; | |||
uint8_t extra[WV_EXTRA_SIZE]; | |||
int64_t pos; | |||
}WVContext; | |||
} WVContext; | |||
static int wv_probe(AVProbeData *p) | |||
{ | |||
@@ -78,7 +78,8 @@ static int wv_probe(AVProbeData *p) | |||
return 0; | |||
} | |||
static int wv_read_block_header(AVFormatContext *ctx, AVIOContext *pb, int append) | |||
static int wv_read_block_header(AVFormatContext *ctx, AVIOContext *pb, | |||
int append) | |||
{ | |||
WVContext *wc = ctx->priv_data; | |||
uint32_t tag, ver; | |||
@@ -87,64 +88,67 @@ static int wv_read_block_header(AVFormatContext *ctx, AVIOContext *pb, int appen | |||
uint32_t chmask; | |||
wc->pos = avio_tell(pb); | |||
if(!append){ | |||
if (!append) { | |||
tag = avio_rl32(pb); | |||
if (tag != MKTAG('w', 'v', 'p', 'k')) | |||
return AVERROR_INVALIDDATA; | |||
size = avio_rl32(pb); | |||
if(size < 24 || size > WV_BLOCK_LIMIT){ | |||
if (size < 24 || size > WV_BLOCK_LIMIT) { | |||
av_log(ctx, AV_LOG_ERROR, "Incorrect block size %i\n", size); | |||
return AVERROR_INVALIDDATA; | |||
} | |||
wc->blksize = size; | |||
ver = avio_rl16(pb); | |||
if(ver < 0x402 || ver > 0x410){ | |||
if (ver < 0x402 || ver > 0x410) { | |||
av_log(ctx, AV_LOG_ERROR, "Unsupported version %03X\n", ver); | |||
return AVERROR_PATCHWELCOME; | |||
} | |||
avio_r8(pb); // track no | |||
avio_r8(pb); // track sub index | |||
wc->samples = avio_rl32(pb); // total samples in file | |||
wc->soff = avio_rl32(pb); // offset in samples of current block | |||
wc->soff = avio_rl32(pb); // offset in samples of current block | |||
avio_read(pb, wc->extra, WV_EXTRA_SIZE); | |||
}else{ | |||
} else { | |||
size = wc->blksize; | |||
} | |||
wc->flags = AV_RL32(wc->extra + 4); | |||
// blocks with zero samples don't contain actual audio information and should be ignored | |||
/* Blocks with zero samples don't contain actual audio information | |||
* and should be ignored */ | |||
if (!AV_RN32(wc->extra)) | |||
return 0; | |||
//parse flags | |||
bpp = ((wc->flags & 3) + 1) << 3; | |||
chan = 1 + !(wc->flags & WV_MONO); | |||
// parse flags | |||
bpp = ((wc->flags & 3) + 1) << 3; | |||
chan = 1 + !(wc->flags & WV_MONO); | |||
chmask = wc->flags & WV_MONO ? AV_CH_LAYOUT_MONO : AV_CH_LAYOUT_STEREO; | |||
rate = wv_rates[(wc->flags >> 23) & 0xF]; | |||
rate = wv_rates[(wc->flags >> 23) & 0xF]; | |||
wc->multichannel = !!((wc->flags & WV_SINGLE_BLOCK) != WV_SINGLE_BLOCK); | |||
if(wc->multichannel){ | |||
chan = wc->chan; | |||
if (wc->multichannel) { | |||
chan = wc->chan; | |||
chmask = wc->chmask; | |||
} | |||
if((rate == -1 || !chan) && !wc->block_parsed){ | |||
if ((rate == -1 || !chan) && !wc->block_parsed) { | |||
int64_t block_end = avio_tell(pb) + wc->blksize - 24; | |||
if(!pb->seekable){ | |||
av_log(ctx, AV_LOG_ERROR, "Cannot determine additional parameters\n"); | |||
if (!pb->seekable) { | |||
av_log(ctx, AV_LOG_ERROR, | |||
"Cannot determine additional parameters\n"); | |||
return AVERROR_INVALIDDATA; | |||
} | |||
while(avio_tell(pb) < block_end){ | |||
while (avio_tell(pb) < block_end) { | |||
int id, size; | |||
id = avio_r8(pb); | |||
id = avio_r8(pb); | |||
size = (id & 0x80) ? avio_rl24(pb) : avio_r8(pb); | |||
size <<= 1; | |||
if(id&0x40) | |||
if (id & 0x40) | |||
size--; | |||
switch(id&0x3F){ | |||
switch (id & 0x3F) { | |||
case 0xD: | |||
if(size <= 1){ | |||
av_log(ctx, AV_LOG_ERROR, "Insufficient channel information\n"); | |||
if (size <= 1) { | |||
av_log(ctx, AV_LOG_ERROR, | |||
"Insufficient channel information\n"); | |||
return AVERROR_INVALIDDATA; | |||
} | |||
chan = avio_r8(pb); | |||
switch(size - 2){ | |||
switch (size - 2) { | |||
case 0: | |||
chmask = avio_r8(pb); | |||
break; | |||
@@ -159,11 +163,12 @@ static int wv_read_block_header(AVFormatContext *ctx, AVIOContext *pb, int appen | |||
break; | |||
case 5: | |||
avio_skip(pb, 1); | |||
chan |= (avio_r8(pb) & 0xF) << 8; | |||
chan |= (avio_r8(pb) & 0xF) << 8; | |||
chmask = avio_rl24(pb); | |||
break; | |||
default: | |||
av_log(ctx, AV_LOG_ERROR, "Invalid channel info size %d\n", size); | |||
av_log(ctx, AV_LOG_ERROR, | |||
"Invalid channel info size %d\n", size); | |||
return AVERROR_INVALIDDATA; | |||
} | |||
break; | |||
@@ -173,30 +178,41 @@ static int wv_read_block_header(AVFormatContext *ctx, AVIOContext *pb, int appen | |||
default: | |||
avio_skip(pb, size); | |||
} | |||
if(id&0x40) | |||
if (id & 0x40) | |||
avio_skip(pb, 1); | |||
} | |||
if(rate == -1){ | |||
av_log(ctx, AV_LOG_ERROR, "Cannot determine custom sampling rate\n"); | |||
if (rate == -1) { | |||
av_log(ctx, AV_LOG_ERROR, | |||
"Cannot determine custom sampling rate\n"); | |||
return AVERROR_INVALIDDATA; | |||
} | |||
avio_seek(pb, block_end - wc->blksize + 24, SEEK_SET); | |||
} | |||
if(!wc->bpp) wc->bpp = bpp; | |||
if(!wc->chan) wc->chan = chan; | |||
if(!wc->chmask) wc->chmask = chmask; | |||
if(!wc->rate) wc->rate = rate; | |||
if (!wc->bpp) | |||
wc->bpp = bpp; | |||
if (!wc->chan) | |||
wc->chan = chan; | |||
if (!wc->chmask) | |||
wc->chmask = chmask; | |||
if (!wc->rate) | |||
wc->rate = rate; | |||
if(wc->flags && bpp != wc->bpp){ | |||
av_log(ctx, AV_LOG_ERROR, "Bits per sample differ, this block: %i, header block: %i\n", bpp, wc->bpp); | |||
if (wc->flags && bpp != wc->bpp) { | |||
av_log(ctx, AV_LOG_ERROR, | |||
"Bits per sample differ, this block: %i, header block: %i\n", | |||
bpp, wc->bpp); | |||
return AVERROR_INVALIDDATA; | |||
} | |||
if(wc->flags && !wc->multichannel && chan != wc->chan){ | |||
av_log(ctx, AV_LOG_ERROR, "Channels differ, this block: %i, header block: %i\n", chan, wc->chan); | |||
if (wc->flags && !wc->multichannel && chan != wc->chan) { | |||
av_log(ctx, AV_LOG_ERROR, | |||
"Channels differ, this block: %i, header block: %i\n", | |||
chan, wc->chan); | |||
return AVERROR_INVALIDDATA; | |||
} | |||
if(wc->flags && rate != -1 && rate != wc->rate){ | |||
av_log(ctx, AV_LOG_ERROR, "Sampling rate differ, this block: %i, header block: %i\n", rate, wc->rate); | |||
if (wc->flags && rate != -1 && rate != wc->rate) { | |||
av_log(ctx, AV_LOG_ERROR, | |||
"Sampling rate differ, this block: %i, header block: %i\n", | |||
rate, wc->rate); | |||
return AVERROR_INVALIDDATA; | |||
} | |||
wc->blksize = size - 24; | |||
@@ -211,10 +227,10 @@ static int wv_read_header(AVFormatContext *s) | |||
int ret; | |||
wc->block_parsed = 0; | |||
for(;;){ | |||
for (;;) { | |||
if ((ret = wv_read_block_header(s, pb, 0)) < 0) | |||
return ret; | |||
if(!AV_RN32(wc->extra)) | |||
if (!AV_RN32(wc->extra)) | |||
avio_skip(pb, wc->blksize - 24); | |||
else | |||
break; | |||
@@ -224,20 +240,20 @@ static int wv_read_header(AVFormatContext *s) | |||
st = avformat_new_stream(s, NULL); | |||
if (!st) | |||
return AVERROR(ENOMEM); | |||
st->codec->codec_type = AVMEDIA_TYPE_AUDIO; | |||
st->codec->codec_id = CODEC_ID_WAVPACK; | |||
st->codec->channels = wc->chan; | |||
st->codec->channel_layout = wc->chmask; | |||
st->codec->sample_rate = wc->rate; | |||
st->codec->codec_type = AVMEDIA_TYPE_AUDIO; | |||
st->codec->codec_id = CODEC_ID_WAVPACK; | |||
st->codec->channels = wc->chan; | |||
st->codec->channel_layout = wc->chmask; | |||
st->codec->sample_rate = wc->rate; | |||
st->codec->bits_per_coded_sample = wc->bpp; | |||
avpriv_set_pts_info(st, 64, 1, wc->rate); | |||
st->start_time = 0; | |||
st->duration = wc->samples; | |||
st->duration = wc->samples; | |||
if(s->pb->seekable) { | |||
if (s->pb->seekable) { | |||
int64_t cur = avio_tell(s->pb); | |||
ff_ape_parse_tag(s); | |||
if(!av_dict_get(s->metadata, "", NULL, AV_DICT_IGNORE_SUFFIX)) | |||
if (!av_dict_get(s->metadata, "", NULL, AV_DICT_IGNORE_SUFFIX)) | |||
ff_id3v1_read(s); | |||
avio_seek(s->pb, cur, SEEK_SET); | |||
} | |||
@@ -245,8 +261,7 @@ static int wv_read_header(AVFormatContext *s) | |||
return 0; | |||
} | |||
static int wv_read_packet(AVFormatContext *s, | |||
AVPacket *pkt) | |||
static int wv_read_packet(AVFormatContext *s, AVPacket *pkt) | |||
{ | |||
WVContext *wc = s->priv_data; | |||
int ret; | |||
@@ -256,41 +271,41 @@ static int wv_read_packet(AVFormatContext *s, | |||
if (url_feof(s->pb)) | |||
return AVERROR_EOF; | |||
if(wc->block_parsed){ | |||
if (wc->block_parsed) { | |||
if ((ret = wv_read_block_header(s, s->pb, 0)) < 0) | |||
return ret; | |||
} | |||
pos = wc->pos; | |||
off = wc->multichannel ? 4 : 0; | |||
if(av_new_packet(pkt, wc->blksize + WV_EXTRA_SIZE + off) < 0) | |||
if (av_new_packet(pkt, wc->blksize + WV_EXTRA_SIZE + off) < 0) | |||
return AVERROR(ENOMEM); | |||
if(wc->multichannel) | |||
if (wc->multichannel) | |||
AV_WL32(pkt->data, wc->blksize + WV_EXTRA_SIZE + 12); | |||
memcpy(pkt->data + off, wc->extra, WV_EXTRA_SIZE); | |||
ret = avio_read(s->pb, pkt->data + WV_EXTRA_SIZE + off, wc->blksize); | |||
if(ret != wc->blksize){ | |||
if (ret != wc->blksize) { | |||
av_free_packet(pkt); | |||
return AVERROR(EIO); | |||
} | |||
while(!(wc->flags & WV_END_BLOCK)){ | |||
if(avio_rl32(s->pb) != MKTAG('w', 'v', 'p', 'k')){ | |||
while (!(wc->flags & WV_END_BLOCK)) { | |||
if (avio_rl32(s->pb) != MKTAG('w', 'v', 'p', 'k')) { | |||
av_free_packet(pkt); | |||
return AVERROR_INVALIDDATA; | |||
} | |||
if((ret = av_append_packet(s->pb, pkt, 4)) < 0){ | |||
if ((ret = av_append_packet(s->pb, pkt, 4)) < 0) { | |||
av_free_packet(pkt); | |||
return ret; | |||
} | |||
size = AV_RL32(pkt->data + pkt->size - 4); | |||
if(size < 24 || size > WV_BLOCK_LIMIT){ | |||
if (size < 24 || size > WV_BLOCK_LIMIT) { | |||
av_free_packet(pkt); | |||
av_log(s, AV_LOG_ERROR, "Incorrect block size %d\n", size); | |||
return AVERROR_INVALIDDATA; | |||
} | |||
wc->blksize = size; | |||
ver = avio_rl16(s->pb); | |||
if(ver < 0x402 || ver > 0x410){ | |||
ver = avio_rl16(s->pb); | |||
if (ver < 0x402 || ver > 0x410) { | |||
av_free_packet(pkt); | |||
av_log(s, AV_LOG_ERROR, "Unsupported version %03X\n", ver); | |||
return AVERROR_PATCHWELCOME; | |||
@@ -298,29 +313,30 @@ static int wv_read_packet(AVFormatContext *s, | |||
avio_r8(s->pb); // track no | |||
avio_r8(s->pb); // track sub index | |||
wc->samples = avio_rl32(s->pb); // total samples in file | |||
wc->soff = avio_rl32(s->pb); // offset in samples of current block | |||
if((ret = av_append_packet(s->pb, pkt, WV_EXTRA_SIZE)) < 0){ | |||
wc->soff = avio_rl32(s->pb); // offset in samples of current block | |||
if ((ret = av_append_packet(s->pb, pkt, WV_EXTRA_SIZE)) < 0) { | |||
av_free_packet(pkt); | |||
return ret; | |||
} | |||
memcpy(wc->extra, pkt->data + pkt->size - WV_EXTRA_SIZE, WV_EXTRA_SIZE); | |||
if ((ret = wv_read_block_header(s, s->pb, 1)) < 0){ | |||
if ((ret = wv_read_block_header(s, s->pb, 1)) < 0) { | |||
av_free_packet(pkt); | |||
return ret; | |||
} | |||
ret = av_append_packet(s->pb, pkt, wc->blksize); | |||
if(ret < 0){ | |||
if (ret < 0) { | |||
av_free_packet(pkt); | |||
return ret; | |||
} | |||
} | |||
pkt->stream_index = 0; | |||
wc->block_parsed = 1; | |||
pkt->pts = wc->soff; | |||
block_samples = AV_RN32(wc->extra); | |||
wc->block_parsed = 1; | |||
pkt->pts = wc->soff; | |||
block_samples = AV_RN32(wc->extra); | |||
if (block_samples > INT32_MAX) | |||
av_log(s, AV_LOG_WARNING, "Too many samples in block: %"PRIu32"\n", block_samples); | |||
av_log(s, AV_LOG_WARNING, | |||
"Too many samples in block: %"PRIu32"\n", block_samples); | |||
else | |||
pkt->duration = block_samples; | |||
@@ -328,9 +344,10 @@ static int wv_read_packet(AVFormatContext *s, | |||
return 0; | |||
} | |||
static int wv_read_seek(AVFormatContext *s, int stream_index, int64_t timestamp, int flags) | |||
static int wv_read_seek(AVFormatContext *s, int stream_index, | |||
int64_t timestamp, int flags) | |||
{ | |||
AVStream *st = s->streams[stream_index]; | |||
AVStream *st = s->streams[stream_index]; | |||
WVContext *wc = s->priv_data; | |||
AVPacket pkt1, *pkt = &pkt1; | |||
int ret; | |||
@@ -345,19 +362,19 @@ static int wv_read_seek(AVFormatContext *s, int stream_index, int64_t timestamp, | |||
return 0; | |||
} | |||
/* if timestamp is out of bounds, return error */ | |||
if(timestamp < 0 || timestamp >= s->duration) | |||
if (timestamp < 0 || timestamp >= s->duration) | |||
return AVERROR(EINVAL); | |||
pos = avio_tell(s->pb); | |||
do{ | |||
do { | |||
ret = av_read_frame(s, pkt); | |||
if (ret < 0){ | |||
if (ret < 0) { | |||
avio_seek(s->pb, pos, SEEK_SET); | |||
return ret; | |||
} | |||
pts = pkt->pts; | |||
av_free_packet(pkt); | |||
}while(pts < timestamp); | |||
} while(pts < timestamp); | |||
return 0; | |||
} | |||
@@ -120,7 +120,7 @@ static int xa_read_packet(AVFormatContext *s, | |||
AVInputFormat ff_xa_demuxer = { | |||
.name = "xa", | |||
.long_name = NULL_IF_CONFIG_SMALL("Maxis XA File Format"), | |||
.long_name = NULL_IF_CONFIG_SMALL("Maxis XA"), | |||
.priv_data_size = sizeof(MaxisXADemuxContext), | |||
.read_probe = xa_probe, | |||
.read_header = xa_read_header, | |||
@@ -211,7 +211,7 @@ static int yop_read_seek(AVFormatContext *s, int stream_index, | |||
AVInputFormat ff_yop_demuxer = { | |||
.name = "yop", | |||
.long_name = NULL_IF_CONFIG_SMALL("Psygnosis YOP Format"), | |||
.long_name = NULL_IF_CONFIG_SMALL("Psygnosis YOP"), | |||
.priv_data_size = sizeof(YopDecContext), | |||
.read_probe = yop_probe, | |||
.read_header = yop_read_header, | |||