Merge remote-tracking branch 'qatar/master'

* qatar/master:
  fate: split off DPCM codec FATE tests into their own file
  fate: split off PCM codec FATE tests into their own file
  libvorbis: K&R reformatting cosmetics
  libmp3lame: K&R formatting cosmetics
  fate: Add a video test for xxan decoder
  mpegvideo_enc: K&R cosmetics (line 1000-2000).
  avconv: K&R cosmetics
  qt-faststart: Fix up indentation
  indeo4: remove two unused variables
  doxygen: cleanup style to support older doxy
  fate: add more tests for VC-1 decoder
  applehttpproto: Apply the same reload interval changes as for the demuxer
  applehttp: Use half the target duration as interval if the playlist didn't update
  applehttp: Use the last segment duration as reload interval
  lagarith: add decode support for arith rgb24 mode

Conflicts:
	avconv.c
	libavcodec/libmp3lame.c
	libavcodec/mpegvideo_enc.c

Merged-by: Michael Niedermayer <michaelni@gmx.at>
This commit is contained in:
Michael Niedermayer 2011-12-30 03:46:24 +01:00
commit 00c0465dbc
21 changed files with 1544 additions and 1223 deletions

545
avconv.c

File diff suppressed because it is too large Load Diff

View File

@ -235,6 +235,8 @@ div.center img {
#footer { #footer {
margin: -10px 1em 0; margin: -10px 1em 0;
padding-top: 20px; padding-top: 20px;
text-align: center;
font-size: small;
} }
address.footer { address.footer {
@ -962,7 +964,7 @@ dl.citelist dd {
} }
.tabs3 .tablist a { .tabs3 .tablist a {
padding: 0 10px; padding-left: 10px;
} }
@ -981,19 +983,6 @@ h1 a, h2 a, h3 a {
color: inherit; color: inherit;
} }
#banner, #top {
background-color: #BBC9D8;
border-bottom: 1px solid #7A96B3;
border-top: 1px solid #7A96B3;
position: relative;
text-align: center;
}
#banner img, #top img {
padding-bottom: 1px;
padding-top: 5px;
}
#body { #body {
margin: 0 1em; margin: 0 1em;
} }
@ -1041,12 +1030,12 @@ img {
border: 0; border: 0;
} }
#navrow1 { .tabs {
margin-top: 12px; margin-top: 12px;
border-top: 1px solid #5C665C; border-top: 1px solid #5C665C;
} }
#navrow1, #navrow2, #navrow3, #navrow4 { .tabs, .tabs2, .tabs3, .tabs4 {
background-color: #738073; background-color: #738073;
border-bottom: 1px solid #5C665C; border-bottom: 1px solid #5C665C;
border-left: 1px solid #5C665C; border-left: 1px solid #5C665C;
@ -1055,24 +1044,36 @@ img {
text-align: center; text-align: center;
} }
#navrow1 a, #navrow2 a, #navrow3 a, #navrow4 a { .tabs a,
.tabs2 a,
.tabs3 a,
.tabs4 a {
color: white; color: white;
padding: 0.3em; padding: 0.3em;
text-decoration: none; text-decoration: none;
} }
#navrow1 ul, #navrow2 ul, #navrow3 ul, #navrow4 ul { .tabs ul,
.tabs2 ul,
.tabs3 ul,
.tabs4 ul {
padding: 0; padding: 0;
} }
#navrow1 li.current a, #navrow2 li.current a, #navrow3 li.current a, #navrow4 li.current a { .tabs li.current a,
.tabs2 li.current a,
.tabs3 li.current a,
.tabs4 li.current a {
background-color: #414141; background-color: #414141;
color: white; color: white;
text-decoration: none; text-decoration: none;
} }
#navrow1 a:hover, #navrow2 a:hover, #navrow3 a:hover, #navrow4 a:hover { .tabs a:hover,
.tabs2 a:hover,
.tabs3 a:hover,
.tabs4 a:hover {
background-color: #313131 !important; background-color: #313131 !important;
color: white; color: white;
text-decoration: none; text-decoration: none;
@ -1094,37 +1095,3 @@ pre {
#proj_desc { #proj_desc {
font-size: 1.2em; font-size: 1.2em;
} }
#repos {
margin-left: 1em;
margin-right: 1em;
border-collapse: collapse;
border: solid 1px #6A996A;
}
#repos th {
background-color: #7BB37B;
border: solid 1px #6A996A;
}
#repos td {
padding: 0.2em;
border: solid 1px #6A996A;
}
#distro_status {
margin-left: 1em;
margin-right: 1em;
border-collapse: collapse;
border: solid 1px #6A996A;
}
#distro_status th {
background-color: #7BB37B;
border: solid 1px #6A996A;
}
#distro_status td {
padding: 0.2em;
border: solid 1px #6A996A;
}

517
ffmpeg.c

File diff suppressed because it is too large Load Diff

View File

@ -160,7 +160,7 @@ static inline int scale_tile_size(int def_size, int size_factor)
*/ */
static int decode_pic_hdr(IVI4DecContext *ctx, AVCodecContext *avctx) static int decode_pic_hdr(IVI4DecContext *ctx, AVCodecContext *avctx)
{ {
int pic_size_indx, val, i, p; int pic_size_indx, i, p;
IVIPicConfig pic_conf; IVIPicConfig pic_conf;
if (get_bits(&ctx->gb, 18) != 0x3FFF8) { if (get_bits(&ctx->gb, 18) != 0x3FFF8) {
@ -301,7 +301,7 @@ static int decode_pic_hdr(IVI4DecContext *ctx, AVCodecContext *avctx)
/* skip picture header extension if any */ /* skip picture header extension if any */
while (get_bits1(&ctx->gb)) { while (get_bits1(&ctx->gb)) {
av_dlog(avctx, "Pic hdr extension encountered!\n"); av_dlog(avctx, "Pic hdr extension encountered!\n");
val = get_bits(&ctx->gb, 8); skip_bits(&ctx->gb, 8);
} }
if (get_bits1(&ctx->gb)) { if (get_bits1(&ctx->gb)) {
@ -325,7 +325,7 @@ static int decode_pic_hdr(IVI4DecContext *ctx, AVCodecContext *avctx)
static int decode_band_hdr(IVI4DecContext *ctx, IVIBandDesc *band, static int decode_band_hdr(IVI4DecContext *ctx, IVIBandDesc *band,
AVCodecContext *avctx) AVCodecContext *avctx)
{ {
int plane, band_num, hdr_size, indx, transform_id, scan_indx; int plane, band_num, indx, transform_id, scan_indx;
int i; int i;
plane = get_bits(&ctx->gb, 2); plane = get_bits(&ctx->gb, 2);
@ -337,7 +337,10 @@ static int decode_band_hdr(IVI4DecContext *ctx, IVIBandDesc *band,
band->is_empty = get_bits1(&ctx->gb); band->is_empty = get_bits1(&ctx->gb);
if (!band->is_empty) { if (!band->is_empty) {
hdr_size = get_bits1(&ctx->gb) ? get_bits(&ctx->gb, 16) : 4; /* skip header size
* If header size is not given, header size is 4 bytes. */
if (get_bits1(&ctx->gb))
skip_bits(&ctx->gb, 16);
band->is_halfpel = get_bits(&ctx->gb, 2); band->is_halfpel = get_bits(&ctx->gb, 2);
if (band->is_halfpel >= 2) { if (band->is_halfpel >= 2) {

View File

@ -31,7 +31,7 @@
#include "mpegaudio.h" #include "mpegaudio.h"
#include <lame/lame.h> #include <lame/lame.h>
#define BUFFER_SIZE (7200 + 2*MPA_FRAME_SIZE + MPA_FRAME_SIZE/4) #define BUFFER_SIZE (7200 + 2 * MPA_FRAME_SIZE + MPA_FRAME_SIZE / 4)
typedef struct Mp3AudioContext { typedef struct Mp3AudioContext {
AVClass *class; AVClass *class;
lame_global_flags *gfp; lame_global_flags *gfp;
@ -62,17 +62,17 @@ static av_cold int MP3lame_encode_init(AVCodecContext *avctx)
lame_set_in_samplerate(s->gfp, avctx->sample_rate); lame_set_in_samplerate(s->gfp, avctx->sample_rate);
lame_set_out_samplerate(s->gfp, avctx->sample_rate); lame_set_out_samplerate(s->gfp, avctx->sample_rate);
lame_set_num_channels(s->gfp, avctx->channels); lame_set_num_channels(s->gfp, avctx->channels);
if(avctx->compression_level == FF_COMPRESSION_DEFAULT) { if (avctx->compression_level == FF_COMPRESSION_DEFAULT) {
lame_set_quality(s->gfp, 5); lame_set_quality(s->gfp, 5);
} else { } else {
lame_set_quality(s->gfp, avctx->compression_level); lame_set_quality(s->gfp, avctx->compression_level);
} }
lame_set_mode(s->gfp, s->stereo ? JOINT_STEREO : MONO); lame_set_mode(s->gfp, s->stereo ? JOINT_STEREO : MONO);
lame_set_brate(s->gfp, avctx->bit_rate/1000); lame_set_brate(s->gfp, avctx->bit_rate / 1000);
if(avctx->flags & CODEC_FLAG_QSCALE) { if (avctx->flags & CODEC_FLAG_QSCALE) {
lame_set_brate(s->gfp, 0); lame_set_brate(s->gfp, 0);
lame_set_VBR(s->gfp, vbr_default); lame_set_VBR(s->gfp, vbr_default);
lame_set_VBR_quality(s->gfp, avctx->global_quality/(float)FF_QP2LAMBDA); lame_set_VBR_quality(s->gfp, avctx->global_quality / (float)FF_QP2LAMBDA);
} }
lame_set_bWriteVbrTag(s->gfp,0); lame_set_bWriteVbrTag(s->gfp,0);
#if FF_API_LAME_GLOBAL_OPTS #if FF_API_LAME_GLOBAL_OPTS
@ -89,7 +89,7 @@ static av_cold int MP3lame_encode_init(AVCodecContext *avctx)
return AVERROR(ENOMEM); return AVERROR(ENOMEM);
} }
avctx->coded_frame->key_frame= 1; avctx->coded_frame->key_frame = 1;
if(AV_SAMPLE_FMT_S32 == avctx->sample_fmt && s->stereo) { if(AV_SAMPLE_FMT_S32 == avctx->sample_fmt && s->stereo) {
int nelem = 2 * avctx->frame_size; int nelem = 2 * avctx->frame_size;
@ -117,27 +117,24 @@ static const int sSampleRates[] = {
}; };
static const int sBitRates[2][3][15] = { static const int sBitRates[2][3][15] = {
{ { 0, 32, 64, 96,128,160,192,224,256,288,320,352,384,416,448}, {
{ 0, 32, 48, 56, 64, 80, 96,112,128,160,192,224,256,320,384}, { 0, 32, 64, 96, 128, 160, 192, 224, 256, 288, 320, 352, 384, 416, 448 },
{ 0, 32, 40, 48, 56, 64, 80, 96,112,128,160,192,224,256,320} { 0, 32, 48, 56, 64, 80, 96, 112, 128, 160, 192, 224, 256, 320, 384 },
{ 0, 32, 40, 48, 56, 64, 80, 96, 112, 128, 160, 192, 224, 256, 320 }
}, },
{ { 0, 32, 48, 56, 64, 80, 96,112,128,144,160,176,192,224,256}, {
{ 0, 8, 16, 24, 32, 40, 48, 56, 64, 80, 96,112,128,144,160}, { 0, 32, 48, 56, 64, 80, 96, 112, 128, 144, 160, 176, 192, 224, 256 },
{ 0, 8, 16, 24, 32, 40, 48, 56, 64, 80, 96,112,128,144,160} { 0, 8, 16, 24, 32, 40, 48, 56, 64, 80, 96, 112, 128, 144, 160 },
{ 0, 8, 16, 24, 32, 40, 48, 56, 64, 80, 96, 112, 128, 144, 160 }
}, },
}; };
static const int sSamplesPerFrame[2][3] = static const int sSamplesPerFrame[2][3] = {
{
{ 384, 1152, 1152 }, { 384, 1152, 1152 },
{ 384, 1152, 576 } { 384, 1152, 576 }
}; };
static const int sBitsPerSlot[3] = { static const int sBitsPerSlot[3] = { 32, 8, 8 };
32,
8,
8
};
static int mp3len(void *data, int *samplesPerFrame, int *sampleRate) static int mp3len(void *data, int *samplesPerFrame, int *sampleRate)
{ {
@ -147,30 +144,35 @@ static int mp3len(void *data, int *samplesPerFrame, int *sampleRate)
int sampleRateID = ((header >> 10) & 0x03); int sampleRateID = ((header >> 10) & 0x03);
int bitsPerSlot = sBitsPerSlot[layerID]; int bitsPerSlot = sBitsPerSlot[layerID];
int isPadded = ((header >> 9) & 0x01); int isPadded = ((header >> 9) & 0x01);
static int const mode_tab[4]= {2,3,1,0}; static int const mode_tab[4] = { 2, 3, 1, 0 };
int mode= mode_tab[(header >> 19) & 0x03]; int mode = mode_tab[(header >> 19) & 0x03];
int mpeg_id= mode>0; int mpeg_id = mode > 0;
int temp0, temp1, bitRate; int temp0, temp1, bitRate;
if ( (( header >> 21 ) & 0x7ff) != 0x7ff || mode == 3 || layerID==3 || sampleRateID==3) { if (((header >> 21) & 0x7ff) != 0x7ff || mode == 3 || layerID == 3 ||
sampleRateID == 3) {
return -1; return -1;
} }
if(!samplesPerFrame) samplesPerFrame= &temp0; if (!samplesPerFrame)
if(!sampleRate ) sampleRate = &temp1; samplesPerFrame = &temp0;
if (!sampleRate)
sampleRate = &temp1;
// *isMono = ((header >> 6) & 0x03) == 0x03; //*isMono = ((header >> 6) & 0x03) == 0x03;
*sampleRate = sSampleRates[sampleRateID]>>mode; *sampleRate = sSampleRates[sampleRateID] >> mode;
bitRate = sBitRates[mpeg_id][layerID][bitRateID] * 1000; bitRate = sBitRates[mpeg_id][layerID][bitRateID] * 1000;
*samplesPerFrame = sSamplesPerFrame[mpeg_id][layerID]; *samplesPerFrame = sSamplesPerFrame[mpeg_id][layerID];
//av_log(NULL, AV_LOG_DEBUG, "sr:%d br:%d spf:%d l:%d m:%d\n", *sampleRate, bitRate, *samplesPerFrame, layerID, mode); //av_log(NULL, AV_LOG_DEBUG,
// "sr:%d br:%d spf:%d l:%d m:%d\n",
// *sampleRate, bitRate, *samplesPerFrame, layerID, mode);
return *samplesPerFrame * bitRate / (bitsPerSlot * *sampleRate) + isPadded; return *samplesPerFrame * bitRate / (bitsPerSlot * *sampleRate) + isPadded;
} }
static int MP3lame_encode_frame(AVCodecContext *avctx, static int MP3lame_encode_frame(AVCodecContext *avctx, unsigned char *frame,
unsigned char *frame, int buf_size, void *data) int buf_size, void *data)
{ {
Mp3AudioContext *s = avctx->priv_data; Mp3AudioContext *s = avctx->priv_data;
int len; int len;
@ -178,7 +180,7 @@ static int MP3lame_encode_frame(AVCodecContext *avctx,
/* lame 3.91 dies on '1-channel interleaved' data */ /* lame 3.91 dies on '1-channel interleaved' data */
if(!data){ if (!data){
lame_result= lame_encode_flush( lame_result= lame_encode_flush(
s->gfp, s->gfp,
s->buffer + s->buffer_index, s->buffer + s->buffer_index,
@ -237,32 +239,35 @@ static int MP3lame_encode_frame(AVCodecContext *avctx,
} }
} }
if(lame_result < 0){ if (lame_result < 0) {
if(lame_result==-1) { if (lame_result == -1) {
/* output buffer too small */ /* output buffer too small */
av_log(avctx, AV_LOG_ERROR, "lame: output buffer too small (buffer index: %d, free bytes: %d)\n", s->buffer_index, BUFFER_SIZE - s->buffer_index); av_log(avctx, AV_LOG_ERROR,
"lame: output buffer too small (buffer index: %d, free bytes: %d)\n",
s->buffer_index, BUFFER_SIZE - s->buffer_index);
} }
return -1; return -1;
} }
s->buffer_index += lame_result; s->buffer_index += lame_result;
if(s->buffer_index<4) if (s->buffer_index < 4)
return 0; return 0;
len= mp3len(s->buffer, NULL, NULL); len = mp3len(s->buffer, NULL, NULL);
//av_log(avctx, AV_LOG_DEBUG, "in:%d packet-len:%d index:%d\n", avctx->frame_size, len, s->buffer_index); //av_log(avctx, AV_LOG_DEBUG, "in:%d packet-len:%d index:%d\n",
if(len <= s->buffer_index){ // avctx->frame_size, len, s->buffer_index);
if (len <= s->buffer_index) {
memcpy(frame, s->buffer, len); memcpy(frame, s->buffer, len);
s->buffer_index -= len; s->buffer_index -= len;
memmove(s->buffer, s->buffer+len, s->buffer_index); memmove(s->buffer, s->buffer + len, s->buffer_index);
//FIXME fix the audio codec API, so we do not need the memcpy() // FIXME fix the audio codec API, so we do not need the memcpy()
/*for(i=0; i<len; i++){ /*for(i=0; i<len; i++) {
av_log(avctx, AV_LOG_DEBUG, "%2X ", frame[i]); av_log(avctx, AV_LOG_DEBUG, "%2X ", frame[i]);
}*/ }*/
return len; return len;
}else } else
return 0; return 0;
} }
@ -299,13 +304,13 @@ AVCodec ff_libmp3lame_encoder = {
.init = MP3lame_encode_init, .init = MP3lame_encode_init,
.encode = MP3lame_encode_frame, .encode = MP3lame_encode_frame,
.close = MP3lame_encode_close, .close = MP3lame_encode_close,
.capabilities= CODEC_CAP_DELAY, .capabilities = CODEC_CAP_DELAY,
.sample_fmts = (const enum AVSampleFormat[]){AV_SAMPLE_FMT_S16, .sample_fmts = (const enum AVSampleFormat[]) { AV_SAMPLE_FMT_S16,
#if 2147483647 == INT_MAX #if 2147483647 == INT_MAX
AV_SAMPLE_FMT_S32, AV_SAMPLE_FMT_S32,
#endif #endif
AV_SAMPLE_FMT_NONE}, AV_SAMPLE_FMT_NONE },
.supported_samplerates= sSampleRates, .supported_samplerates = sSampleRates,
.long_name= NULL_IF_CONFIG_SMALL("libmp3lame MP3 (MPEG audio layer 3)"), .long_name = NULL_IF_CONFIG_SMALL("libmp3lame MP3 (MPEG audio layer 3)"),
.priv_class = &libmp3lame_class, .priv_class = &libmp3lame_class,
}; };

View File

@ -37,37 +37,38 @@
#define OGGVORBIS_FRAME_SIZE 64 #define OGGVORBIS_FRAME_SIZE 64
#define BUFFER_SIZE (1024*64) #define BUFFER_SIZE (1024 * 64)
typedef struct OggVorbisContext { typedef struct OggVorbisContext {
AVClass *av_class; AVClass *av_class;
vorbis_info vi ; vorbis_info vi;
vorbis_dsp_state vd ; vorbis_dsp_state vd;
vorbis_block vb ; vorbis_block vb;
uint8_t buffer[BUFFER_SIZE]; uint8_t buffer[BUFFER_SIZE];
int buffer_index; int buffer_index;
int eof; int eof;
/* decoder */ /* decoder */
vorbis_comment vc ; vorbis_comment vc;
ogg_packet op; ogg_packet op;
double iblock; double iblock;
} OggVorbisContext ; } OggVorbisContext;
static const AVOption options[]={ static const AVOption options[] = {
{"iblock", "Sets the impulse block bias", offsetof(OggVorbisContext, iblock), AV_OPT_TYPE_DOUBLE, {.dbl = 0}, -15, 0, AV_OPT_FLAG_AUDIO_PARAM|AV_OPT_FLAG_ENCODING_PARAM}, { "iblock", "Sets the impulse block bias", offsetof(OggVorbisContext, iblock), AV_OPT_TYPE_DOUBLE, { .dbl = 0 }, -15, 0, AV_OPT_FLAG_AUDIO_PARAM | AV_OPT_FLAG_ENCODING_PARAM },
{NULL} { NULL }
}; };
static const AVClass class = { "libvorbis", av_default_item_name, options, LIBAVUTIL_VERSION_INT }; static const AVClass class = { "libvorbis", av_default_item_name, options, LIBAVUTIL_VERSION_INT };
static av_cold int oggvorbis_init_encoder(vorbis_info *vi, AVCodecContext *avccontext) { static av_cold int oggvorbis_init_encoder(vorbis_info *vi, AVCodecContext *avccontext)
OggVorbisContext *context = avccontext->priv_data ; {
OggVorbisContext *context = avccontext->priv_data;
double cfreq; double cfreq;
if(avccontext->flags & CODEC_FLAG_QSCALE) { if (avccontext->flags & CODEC_FLAG_QSCALE) {
/* variable bitrate */ /* variable bitrate */
if(vorbis_encode_setup_vbr(vi, avccontext->channels, if (vorbis_encode_setup_vbr(vi, avccontext->channels,
avccontext->sample_rate, avccontext->sample_rate,
avccontext->global_quality / (float)FF_QP2LAMBDA / 10.0)) avccontext->global_quality / (float)FF_QP2LAMBDA / 10.0))
return -1; return -1;
@ -76,24 +77,25 @@ static av_cold int oggvorbis_init_encoder(vorbis_info *vi, AVCodecContext *avcco
int maxrate = avccontext->rc_min_rate > 0 ? avccontext->rc_max_rate : -1; int maxrate = avccontext->rc_min_rate > 0 ? avccontext->rc_max_rate : -1;
/* constant bitrate */ /* constant bitrate */
if(vorbis_encode_setup_managed(vi, avccontext->channels, if (vorbis_encode_setup_managed(vi, avccontext->channels,
avccontext->sample_rate, minrate, avccontext->bit_rate, maxrate)) avccontext->sample_rate, minrate,
avccontext->bit_rate, maxrate))
return -1; return -1;
/* variable bitrate by estimate, disable slow rate management */ /* variable bitrate by estimate, disable slow rate management */
if(minrate == -1 && maxrate == -1) if (minrate == -1 && maxrate == -1)
if(vorbis_encode_ctl(vi, OV_ECTL_RATEMANAGE2_SET, NULL)) if (vorbis_encode_ctl(vi, OV_ECTL_RATEMANAGE2_SET, NULL))
return -1; return -1;
} }
/* cutoff frequency */ /* cutoff frequency */
if(avccontext->cutoff > 0) { if (avccontext->cutoff > 0) {
cfreq = avccontext->cutoff / 1000.0; cfreq = avccontext->cutoff / 1000.0;
if(vorbis_encode_ctl(vi, OV_ECTL_LOWPASS_SET, &cfreq)) if (vorbis_encode_ctl(vi, OV_ECTL_LOWPASS_SET, &cfreq))
return -1; return -1;
} }
if(context->iblock){ if (context->iblock) {
vorbis_encode_ctl(vi, OV_ECTL_IBLOCK_SET, &context->iblock); vorbis_encode_ctl(vi, OV_ECTL_IBLOCK_SET, &context->iblock);
} }
@ -130,29 +132,33 @@ static av_cold int oggvorbis_init_encoder(vorbis_info *vi, AVCodecContext *avcco
} }
/* How many bytes are needed for a buffer of length 'l' */ /* How many bytes are needed for a buffer of length 'l' */
static int xiph_len(int l) { return (1 + l / 255 + l); } static int xiph_len(int l)
{
return (1 + l / 255 + l);
}
static av_cold int oggvorbis_encode_init(AVCodecContext *avccontext) { static av_cold int oggvorbis_encode_init(AVCodecContext *avccontext)
OggVorbisContext *context = avccontext->priv_data ; {
OggVorbisContext *context = avccontext->priv_data;
ogg_packet header, header_comm, header_code; ogg_packet header, header_comm, header_code;
uint8_t *p; uint8_t *p;
unsigned int offset; unsigned int offset;
vorbis_info_init(&context->vi) ; vorbis_info_init(&context->vi);
if(oggvorbis_init_encoder(&context->vi, avccontext) < 0) { if (oggvorbis_init_encoder(&context->vi, avccontext) < 0) {
av_log(avccontext, AV_LOG_ERROR, "oggvorbis_encode_init: init_encoder failed\n") ; av_log(avccontext, AV_LOG_ERROR, "oggvorbis_encode_init: init_encoder failed\n");
return -1 ; return -1;
} }
vorbis_analysis_init(&context->vd, &context->vi) ; vorbis_analysis_init(&context->vd, &context->vi);
vorbis_block_init(&context->vd, &context->vb) ; vorbis_block_init(&context->vd, &context->vb);
vorbis_comment_init(&context->vc); vorbis_comment_init(&context->vc);
vorbis_comment_add_tag(&context->vc, "encoder", LIBAVCODEC_IDENT) ; vorbis_comment_add_tag(&context->vc, "encoder", LIBAVCODEC_IDENT);
vorbis_analysis_headerout(&context->vd, &context->vc, &header, vorbis_analysis_headerout(&context->vd, &context->vc, &header,
&header_comm, &header_code); &header_comm, &header_code);
avccontext->extradata_size= avccontext->extradata_size =
1 + xiph_len(header.bytes) + xiph_len(header_comm.bytes) + 1 + xiph_len(header.bytes) + xiph_len(header_comm.bytes) +
header_code.bytes; header_code.bytes;
p = avccontext->extradata = p = avccontext->extradata =
@ -169,56 +175,57 @@ static av_cold int oggvorbis_encode_init(AVCodecContext *avccontext) {
offset += header_code.bytes; offset += header_code.bytes;
assert(offset == avccontext->extradata_size); assert(offset == avccontext->extradata_size);
/* vorbis_block_clear(&context->vb); #if 0
vorbis_block_clear(&context->vb);
vorbis_dsp_clear(&context->vd); vorbis_dsp_clear(&context->vd);
vorbis_info_clear(&context->vi);*/ vorbis_info_clear(&context->vi);
#endif
vorbis_comment_clear(&context->vc); vorbis_comment_clear(&context->vc);
avccontext->frame_size = OGGVORBIS_FRAME_SIZE ; avccontext->frame_size = OGGVORBIS_FRAME_SIZE;
avccontext->coded_frame= avcodec_alloc_frame(); avccontext->coded_frame = avcodec_alloc_frame();
avccontext->coded_frame->key_frame= 1; avccontext->coded_frame->key_frame = 1;
return 0 ; return 0;
} }
static int oggvorbis_encode_frame(AVCodecContext *avccontext, static int oggvorbis_encode_frame(AVCodecContext *avccontext,
unsigned char *packets, unsigned char *packets,
int buf_size, void *data) int buf_size, void *data)
{ {
OggVorbisContext *context = avccontext->priv_data ; OggVorbisContext *context = avccontext->priv_data;
ogg_packet op ; ogg_packet op;
signed short *audio = data ; signed short *audio = data;
int l; int l;
if(data) { if (data) {
const int samples = avccontext->frame_size; const int samples = avccontext->frame_size;
float **buffer ; float **buffer;
int c, channels = context->vi.channels; int c, channels = context->vi.channels;
buffer = vorbis_analysis_buffer(&context->vd, samples) ; buffer = vorbis_analysis_buffer(&context->vd, samples);
for (c = 0; c < channels; c++) { for (c = 0; c < channels; c++) {
int co = (channels > 8) ? c : int co = (channels > 8) ? c :
ff_vorbis_encoding_channel_layout_offsets[channels-1][c]; ff_vorbis_encoding_channel_layout_offsets[channels - 1][c];
for(l = 0 ; l < samples ; l++) for (l = 0; l < samples; l++)
buffer[c][l]=audio[l*channels+co]/32768.f; buffer[c][l] = audio[l * channels + co] / 32768.f;
} }
vorbis_analysis_wrote(&context->vd, samples) ; vorbis_analysis_wrote(&context->vd, samples);
} else { } else {
if(!context->eof) if (!context->eof)
vorbis_analysis_wrote(&context->vd, 0) ; vorbis_analysis_wrote(&context->vd, 0);
context->eof = 1; context->eof = 1;
} }
while(vorbis_analysis_blockout(&context->vd, &context->vb) == 1) { while (vorbis_analysis_blockout(&context->vd, &context->vb) == 1) {
vorbis_analysis(&context->vb, NULL); vorbis_analysis(&context->vb, NULL);
vorbis_bitrate_addblock(&context->vb) ; vorbis_bitrate_addblock(&context->vb);
while(vorbis_bitrate_flushpacket(&context->vd, &op)) { while (vorbis_bitrate_flushpacket(&context->vd, &op)) {
/* i'd love to say the following line is a hack, but sadly it's /* i'd love to say the following line is a hack, but sadly it's
* not, apparently the end of stream decision is in libogg. */ * not, apparently the end of stream decision is in libogg. */
if(op.bytes==1 && op.e_o_s) if (op.bytes == 1 && op.e_o_s)
continue; continue;
if (context->buffer_index + sizeof(ogg_packet) + op.bytes > BUFFER_SIZE) { if (context->buffer_index + sizeof(ogg_packet) + op.bytes > BUFFER_SIZE) {
av_log(avccontext, AV_LOG_ERROR, "libvorbis: buffer overflow."); av_log(avccontext, AV_LOG_ERROR, "libvorbis: buffer overflow.");
@ -232,13 +239,13 @@ static int oggvorbis_encode_frame(AVCodecContext *avccontext,
} }
} }
l=0; l = 0;
if(context->buffer_index){ if (context->buffer_index) {
ogg_packet *op2= (ogg_packet*)context->buffer; ogg_packet *op2 = (ogg_packet *)context->buffer;
op2->packet = context->buffer + sizeof(ogg_packet); op2->packet = context->buffer + sizeof(ogg_packet);
l= op2->bytes; l = op2->bytes;
avccontext->coded_frame->pts= av_rescale_q(op2->granulepos, (AVRational){1, avccontext->sample_rate}, avccontext->time_base); avccontext->coded_frame->pts = av_rescale_q(op2->granulepos, (AVRational) { 1, avccontext->sample_rate }, avccontext->time_base);
//FIXME we should reorder the user supplied pts and not assume that they are spaced by 1/sample_rate //FIXME we should reorder the user supplied pts and not assume that they are spaced by 1/sample_rate
if (l > buf_size) { if (l > buf_size) {
@ -255,12 +262,12 @@ static int oggvorbis_encode_frame(AVCodecContext *avccontext,
return l; return l;
} }
static av_cold int oggvorbis_encode_close(AVCodecContext *avccontext)
static av_cold int oggvorbis_encode_close(AVCodecContext *avccontext) { {
OggVorbisContext *context = avccontext->priv_data ; OggVorbisContext *context = avccontext->priv_data;
/* ogg_packet op ; */ /* ogg_packet op ; */
vorbis_analysis_wrote(&context->vd, 0) ; /* notify vorbisenc this is EOF */ vorbis_analysis_wrote(&context->vd, 0); /* notify vorbisenc this is EOF */
vorbis_block_clear(&context->vb); vorbis_block_clear(&context->vb);
vorbis_dsp_clear(&context->vd); vorbis_dsp_clear(&context->vd);
@ -269,10 +276,9 @@ static av_cold int oggvorbis_encode_close(AVCodecContext *avccontext) {
av_freep(&avccontext->coded_frame); av_freep(&avccontext->coded_frame);
av_freep(&avccontext->extradata); av_freep(&avccontext->extradata);
return 0 ; return 0;
} }
AVCodec ff_libvorbis_encoder = { AVCodec ff_libvorbis_encoder = {
.name = "libvorbis", .name = "libvorbis",
.type = AVMEDIA_TYPE_AUDIO, .type = AVMEDIA_TYPE_AUDIO,
@ -282,7 +288,7 @@ AVCodec ff_libvorbis_encoder = {
.encode = oggvorbis_encode_frame, .encode = oggvorbis_encode_frame,
.close = oggvorbis_encode_close, .close = oggvorbis_encode_close,
.capabilities = CODEC_CAP_DELAY, .capabilities = CODEC_CAP_DELAY,
.sample_fmts = (const enum AVSampleFormat[]){AV_SAMPLE_FMT_S16,AV_SAMPLE_FMT_NONE}, .sample_fmts = (const enum AVSampleFormat[]) { AV_SAMPLE_FMT_S16, AV_SAMPLE_FMT_NONE },
.long_name = NULL_IF_CONFIG_SMALL("libvorbis Vorbis"), .long_name = NULL_IF_CONFIG_SMALL("libvorbis Vorbis"),
.priv_class = &class, .priv_class = &class,
}; };

File diff suppressed because it is too large Load Diff

View File

@ -376,13 +376,23 @@ static int read_data(void *opaque, uint8_t *buf, int buf_size)
restart: restart:
if (!v->input) { if (!v->input) {
reload: /* If this is a live stream and the reload interval has elapsed since
/* If this is a live stream and target_duration has elapsed since
* the last playlist reload, reload the variant playlists now. */ * the last playlist reload, reload the variant playlists now. */
int64_t reload_interval = v->n_segments > 0 ?
v->segments[v->n_segments - 1]->duration :
v->target_duration;
reload_interval *= 1000000;
reload:
if (!v->finished && if (!v->finished &&
av_gettime() - v->last_load_time >= v->target_duration*1000000 && av_gettime() - v->last_load_time >= reload_interval) {
(ret = parse_playlist(c, v->url, v, NULL)) < 0) if ((ret = parse_playlist(c, v->url, v, NULL)) < 0)
return ret; return ret;
/* If we need to reload the playlist again below (if
* there's still no more segments), switch to a reload
* interval of half the target duration. */
reload_interval = v->target_duration * 500000;
}
if (v->cur_seq_no < v->start_seq_no) { if (v->cur_seq_no < v->start_seq_no) {
av_log(NULL, AV_LOG_WARNING, av_log(NULL, AV_LOG_WARNING,
"skipping %d segments ahead, expired from playlists\n", "skipping %d segments ahead, expired from playlists\n",
@ -392,8 +402,7 @@ reload:
if (v->cur_seq_no >= v->start_seq_no + v->n_segments) { if (v->cur_seq_no >= v->start_seq_no + v->n_segments) {
if (v->finished) if (v->finished)
return AVERROR_EOF; return AVERROR_EOF;
while (av_gettime() - v->last_load_time < while (av_gettime() - v->last_load_time < reload_interval) {
v->target_duration*1000000) {
if (ff_check_interrupt(c->interrupt_callback)) if (ff_check_interrupt(c->interrupt_callback))
return AVERROR_EXIT; return AVERROR_EXIT;
usleep(100*1000); usleep(100*1000);

View File

@ -244,6 +244,7 @@ static int applehttp_read(URLContext *h, uint8_t *buf, int size)
AppleHTTPContext *s = h->priv_data; AppleHTTPContext *s = h->priv_data;
const char *url; const char *url;
int ret; int ret;
int64_t reload_interval;
start: start:
if (s->seg_hd) { if (s->seg_hd) {
@ -256,12 +257,21 @@ start:
s->seg_hd = NULL; s->seg_hd = NULL;
s->cur_seq_no++; s->cur_seq_no++;
} }
reload_interval = s->n_segments > 0 ?
s->segments[s->n_segments - 1]->duration :
s->target_duration;
reload_interval *= 1000000;
retry: retry:
if (!s->finished) { if (!s->finished) {
int64_t now = av_gettime(); int64_t now = av_gettime();
if (now - s->last_load_time >= s->target_duration*1000000) if (now - s->last_load_time >= reload_interval) {
if ((ret = parse_playlist(h, s->playlisturl)) < 0) if ((ret = parse_playlist(h, s->playlisturl)) < 0)
return ret; return ret;
/* If we need to reload the playlist again below (if
* there's still no more segments), switch to a reload
* interval of half the target duration. */
reload_interval = s->target_duration * 500000;
}
} }
if (s->cur_seq_no < s->start_seq_no) { if (s->cur_seq_no < s->start_seq_no) {
av_log(h, AV_LOG_WARNING, av_log(h, AV_LOG_WARNING,
@ -272,7 +282,7 @@ retry:
if (s->cur_seq_no - s->start_seq_no >= s->n_segments) { if (s->cur_seq_no - s->start_seq_no >= s->n_segments) {
if (s->finished) if (s->finished)
return AVERROR_EOF; return AVERROR_EOF;
while (av_gettime() - s->last_load_time < s->target_duration*1000000) { while (av_gettime() - s->last_load_time < reload_interval) {
if (ff_check_interrupt(&h->interrupt_callback)) if (ff_check_interrupt(&h->interrupt_callback))
return AVERROR_EXIT; return AVERROR_EXIT;
usleep(100*1000); usleep(100*1000);

View File

@ -50,6 +50,7 @@ include $(SRC_PATH)/tests/fate/amrnb.mak
include $(SRC_PATH)/tests/fate/amrwb.mak include $(SRC_PATH)/tests/fate/amrwb.mak
include $(SRC_PATH)/tests/fate/atrac.mak include $(SRC_PATH)/tests/fate/atrac.mak
include $(SRC_PATH)/tests/fate/dct.mak include $(SRC_PATH)/tests/fate/dct.mak
include $(SRC_PATH)/tests/fate/dpcm.mak
include $(SRC_PATH)/tests/fate/fft.mak include $(SRC_PATH)/tests/fate/fft.mak
include $(SRC_PATH)/tests/fate/h264.mak include $(SRC_PATH)/tests/fate/h264.mak
include $(SRC_PATH)/tests/fate/image.mak include $(SRC_PATH)/tests/fate/image.mak
@ -62,6 +63,7 @@ include $(SRC_PATH)/tests/fate/lossless-video.mak
include $(SRC_PATH)/tests/fate/microsoft.mak include $(SRC_PATH)/tests/fate/microsoft.mak
include $(SRC_PATH)/tests/fate/mp3.mak include $(SRC_PATH)/tests/fate/mp3.mak
include $(SRC_PATH)/tests/fate/mpc.mak include $(SRC_PATH)/tests/fate/mpc.mak
include $(SRC_PATH)/tests/fate/pcm.mak
include $(SRC_PATH)/tests/fate/prores.mak include $(SRC_PATH)/tests/fate/prores.mak
include $(SRC_PATH)/tests/fate/qtrle.mak include $(SRC_PATH)/tests/fate/qtrle.mak
include $(SRC_PATH)/tests/fate/real.mak include $(SRC_PATH)/tests/fate/real.mak

View File

@ -6,10 +6,6 @@ FATE_TESTS += fate-8bps
fate-8bps: CMD = framecrc -i $(SAMPLES)/8bps/full9iron-partial.mov -pix_fmt rgb24 fate-8bps: CMD = framecrc -i $(SAMPLES)/8bps/full9iron-partial.mov -pix_fmt rgb24
FATE_TESTS += fate-aasc FATE_TESTS += fate-aasc
fate-aasc: CMD = framecrc -i $(SAMPLES)/aasc/AASC-1.5MB.AVI -pix_fmt rgb24 fate-aasc: CMD = framecrc -i $(SAMPLES)/aasc/AASC-1.5MB.AVI -pix_fmt rgb24
FATE_TESTS += fate-adpcm-ea-r2
fate-adpcm-ea-r2: CMD = crc -i $(SAMPLES)/ea-mpc/THX_logo.mpc -vn
FATE_TESTS += fate-adpcm-ea-r3
fate-adpcm-ea-r3: CMD = crc -i $(SAMPLES)/ea-vp6/THX_logo.vp6 -vn
FATE_TESTS += fate-adts-demux FATE_TESTS += fate-adts-demux
fate-adts-demux: CMD = crc -i $(SAMPLES)/aac/ct_faac-adts.aac -acodec copy fate-adts-demux: CMD = crc -i $(SAMPLES)/aac/ct_faac-adts.aac -acodec copy
FATE_TESTS += fate-aea-demux FATE_TESTS += fate-aea-demux
@ -40,14 +36,6 @@ FATE_TESTS += fate-cljr
fate-cljr: CMD = framecrc -i $(SAMPLES)/cljr/testcljr-partial.avi fate-cljr: CMD = framecrc -i $(SAMPLES)/cljr/testcljr-partial.avi
FATE_TESTS += fate-corepng FATE_TESTS += fate-corepng
fate-corepng: CMD = framecrc -i $(SAMPLES)/png1/corepng-partial.avi fate-corepng: CMD = framecrc -i $(SAMPLES)/png1/corepng-partial.avi
FATE_TESTS += fate-creative-adpcm
fate-creative-adpcm: CMD = md5 -i $(SAMPLES)/creative/intro-partial.wav -f s16le
FATE_TESTS += fate-creative-adpcm-8-2.6bit
fate-creative-adpcm-8-2.6bit: CMD = md5 -i $(SAMPLES)/creative/BBC_3BIT.VOC -f s16le
FATE_TESTS += fate-creative-adpcm-8-2bit
fate-creative-adpcm-8-2bit: CMD = md5 -i $(SAMPLES)/creative/BBC_2BIT.VOC -f s16le
FATE_TESTS += fate-creative-adpcm-8-4bit
fate-creative-adpcm-8-4bit: CMD = md5 -i $(SAMPLES)/creative/BBC_4BIT.VOC -f s16le
FATE_TESTS += fate-creatureshock-avs FATE_TESTS += fate-creatureshock-avs
fate-creatureshock-avs: CMD = framecrc -i $(SAMPLES)/creatureshock-avs/OUTATIME.AVS -pix_fmt rgb24 fate-creatureshock-avs: CMD = framecrc -i $(SAMPLES)/creatureshock-avs/OUTATIME.AVS -pix_fmt rgb24
FATE_TESTS += fate-cryo-apc FATE_TESTS += fate-cryo-apc
@ -66,10 +54,6 @@ FATE_TESTS += fate-delphine-cin
fate-delphine-cin: CMD = framecrc -i $(SAMPLES)/delphine-cin/LOGO-partial.CIN -pix_fmt rgb24 -vsync 0 fate-delphine-cin: CMD = framecrc -i $(SAMPLES)/delphine-cin/LOGO-partial.CIN -pix_fmt rgb24 -vsync 0
FATE_TESTS += fate-deluxepaint-anm FATE_TESTS += fate-deluxepaint-anm
fate-deluxepaint-anm: CMD = framecrc -i $(SAMPLES)/deluxepaint-anm/INTRO1.ANM -pix_fmt rgb24 fate-deluxepaint-anm: CMD = framecrc -i $(SAMPLES)/deluxepaint-anm/INTRO1.ANM -pix_fmt rgb24
FATE_TESTS += fate-duck-dk3
fate-duck-dk3: CMD = md5 -i $(SAMPLES)/duck/sop-audio-only.avi -f s16le
FATE_TESTS += fate-duck-dk4
fate-duck-dk4: CMD = md5 -i $(SAMPLES)/duck/salsa-audio-only.avi -f s16le
FATE_TESTS += fate-duck-tm2 FATE_TESTS += fate-duck-tm2
fate-duck-tm2: CMD = framecrc -i $(SAMPLES)/duck/tm20.avi fate-duck-tm2: CMD = framecrc -i $(SAMPLES)/duck/tm20.avi
FATE_TESTS += fate-ea-cdata FATE_TESTS += fate-ea-cdata
@ -78,22 +62,14 @@ FATE_TESTS += fate-ea-cmv
fate-ea-cmv: CMD = framecrc -i $(SAMPLES)/ea-cmv/TITLE.CMV -vsync 0 -pix_fmt rgb24 fate-ea-cmv: CMD = framecrc -i $(SAMPLES)/ea-cmv/TITLE.CMV -vsync 0 -pix_fmt rgb24
FATE_TESTS += fate-ea-dct FATE_TESTS += fate-ea-dct
fate-ea-dct: CMD = framecrc -idct simple -i $(SAMPLES)/ea-dct/NFS2Esprit-partial.dct fate-ea-dct: CMD = framecrc -idct simple -i $(SAMPLES)/ea-dct/NFS2Esprit-partial.dct
FATE_TESTS += fate-ea-mad-adpcm-ea-r1
fate-ea-mad-adpcm-ea-r1: CMD = framecrc -i $(SAMPLES)/ea-mad/NFS6LogoE.mad
FATE_TESTS += fate-ea-mad-pcm-planar
fate-ea-mad-pcm-planar: CMD = framecrc -i $(SAMPLES)/ea-mad/xeasport.mad
FATE_TESTS += fate-ea-tgq FATE_TESTS += fate-ea-tgq
fate-ea-tgq: CMD = framecrc -i $(SAMPLES)/ea-tgq/v27.tgq -an fate-ea-tgq: CMD = framecrc -i $(SAMPLES)/ea-tgq/v27.tgq -an
FATE_TESTS += fate-ea-tgv-ima-ea-eacs FATE_TESTS += fate-ea-tgv-ima-ea-eacs
fate-ea-tgv-ima-ea-eacs: CMD = framecrc -i $(SAMPLES)/ea-tgv/INTRO8K-partial.TGV -pix_fmt rgb24 fate-ea-tgv-ima-ea-eacs: CMD = framecrc -i $(SAMPLES)/ea-tgv/INTRO8K-partial.TGV -pix_fmt rgb24
FATE_TESTS += fate-ea-tgv-ima-ea-sead FATE_TESTS += fate-ea-tgv-ima-ea-sead
fate-ea-tgv-ima-ea-sead: CMD = framecrc -i $(SAMPLES)/ea-tgv/INTEL_S.TGV -pix_fmt rgb24 fate-ea-tgv-ima-ea-sead: CMD = framecrc -i $(SAMPLES)/ea-tgv/INTEL_S.TGV -pix_fmt rgb24
FATE_TESTS += fate-ea-tqi-adpcm
fate-ea-tqi-adpcm: CMD = framecrc -i $(SAMPLES)/ea-wve/networkBackbone-partial.wve -frames:v 26
FATE_TESTS += fate-feeble-dxa FATE_TESTS += fate-feeble-dxa
fate-feeble-dxa: CMD = framecrc -i $(SAMPLES)/dxa/meetsquid.dxa -t 2 -pix_fmt rgb24 fate-feeble-dxa: CMD = framecrc -i $(SAMPLES)/dxa/meetsquid.dxa -t 2 -pix_fmt rgb24
FATE_TESTS += fate-film-cvid-pcm-stereo-8bit
fate-film-cvid-pcm-stereo-8bit: CMD = framecrc -i $(SAMPLES)/film/logo-capcom.cpk
FATE_TESTS += fate-flic-af11-palette-change FATE_TESTS += fate-flic-af11-palette-change
fate-flic-af11-palette-change: CMD = framecrc -i $(SAMPLES)/fli/fli-engines.fli -t 3.3 -pix_fmt rgb24 fate-flic-af11-palette-change: CMD = framecrc -i $(SAMPLES)/fli/fli-engines.fli -t 3.3 -pix_fmt rgb24
FATE_TESTS += fate-flic-af12 FATE_TESTS += fate-flic-af12
@ -110,8 +86,6 @@ FATE_TESTS += fate-g729-1
fate-g729-1: CMD = framecrc -i $(SAMPLES)/act/REC05.act -t 10 fate-g729-1: CMD = framecrc -i $(SAMPLES)/act/REC05.act -t 10
FATE_TESTS += fate-id-cin-video FATE_TESTS += fate-id-cin-video
fate-id-cin-video: CMD = framecrc -i $(SAMPLES)/idcin/idlog-2MB.cin -pix_fmt rgb24 fate-id-cin-video: CMD = framecrc -i $(SAMPLES)/idcin/idlog-2MB.cin -pix_fmt rgb24
FATE_TESTS += fate-idroq-video-dpcm
fate-idroq-video-dpcm: CMD = framecrc -i $(SAMPLES)/idroq/idlogo.roq
FATE_TESTS-$(CONFIG_AVFILTER) += fate-idroq-video-encode FATE_TESTS-$(CONFIG_AVFILTER) += fate-idroq-video-encode
fate-idroq-video-encode: CMD = md5 -f image2 -vcodec pgmyuv -i $(SAMPLES)/ffmpeg-synthetic/vsynth1/%02d.pgm -sws_flags +bitexact -vf pad=512:512:80:112 -f RoQ -t 0.2 fate-idroq-video-encode: CMD = md5 -f image2 -vcodec pgmyuv -i $(SAMPLES)/ffmpeg-synthetic/vsynth1/%02d.pgm -sws_flags +bitexact -vf pad=512:512:80:112 -f RoQ -t 0.2
FATE_TESTS += fate-iff-byterun1 FATE_TESTS += fate-iff-byterun1
@ -120,8 +94,6 @@ FATE_TESTS += fate-iff-fibonacci
fate-iff-fibonacci: CMD = md5 -i $(SAMPLES)/iff/dasboot-in-compressed -f s16le fate-iff-fibonacci: CMD = md5 -i $(SAMPLES)/iff/dasboot-in-compressed -f s16le
FATE_TESTS += fate-iff-ilbm FATE_TESTS += fate-iff-ilbm
fate-iff-ilbm: CMD = framecrc -i $(SAMPLES)/iff/lms-matriks.ilbm -pix_fmt rgb24 fate-iff-ilbm: CMD = framecrc -i $(SAMPLES)/iff/lms-matriks.ilbm -pix_fmt rgb24
FATE_TESTS += fate-iff-pcm
fate-iff-pcm: CMD = md5 -i $(SAMPLES)/iff/Bells -f s16le
FATE_TESTS += fate-interplay-mve-16bit FATE_TESTS += fate-interplay-mve-16bit
fate-interplay-mve-16bit: CMD = framecrc -i $(SAMPLES)/interplay-mve/descent3-level5-16bit-partial.mve -pix_fmt rgb24 fate-interplay-mve-16bit: CMD = framecrc -i $(SAMPLES)/interplay-mve/descent3-level5-16bit-partial.mve -pix_fmt rgb24
FATE_TESTS += fate-interplay-mve-8bit FATE_TESTS += fate-interplay-mve-8bit
@ -150,14 +122,10 @@ FATE_TESTS += fate-nuv
fate-nuv: CMD = framecrc -idct simple -i $(SAMPLES)/nuv/Today.nuv -vsync 0 fate-nuv: CMD = framecrc -idct simple -i $(SAMPLES)/nuv/Today.nuv -vsync 0
FATE_TESTS += fate-oma-demux FATE_TESTS += fate-oma-demux
fate-oma-demux: CMD = crc -i $(SAMPLES)/oma/01-Untitled-partial.oma -acodec copy fate-oma-demux: CMD = crc -i $(SAMPLES)/oma/01-Untitled-partial.oma -acodec copy
FATE_TESTS += fate-pcm_dvd
fate-pcm_dvd: CMD = framecrc -i $(SAMPLES)/pcm-dvd/coolitnow-partial.vob -vn
FATE_TESTS += fate-psx-str FATE_TESTS += fate-psx-str
fate-psx-str: CMD = framecrc -i $(SAMPLES)/psx-str/descent-partial.str fate-psx-str: CMD = framecrc -i $(SAMPLES)/psx-str/descent-partial.str
FATE_TESTS += fate-psx-str-v3-mdec FATE_TESTS += fate-psx-str-v3-mdec
fate-psx-str-v3-mdec: CMD = framecrc -i $(SAMPLES)/psx-str/abc000_cut.str -an fate-psx-str-v3-mdec: CMD = framecrc -i $(SAMPLES)/psx-str/abc000_cut.str -an
FATE_TESTS += fate-psx-str-v3-adpcm_xa
fate-psx-str-v3-adpcm_xa: CMD = framecrc -i $(SAMPLES)/psx-str/abc000_cut.str -vn
FATE_TESTS += fate-pva-demux FATE_TESTS += fate-pva-demux
fate-pva-demux: CMD = framecrc -idct simple -i $(SAMPLES)/pva/PVA_test-partial.pva -t 0.6 -acodec copy fate-pva-demux: CMD = framecrc -idct simple -i $(SAMPLES)/pva/PVA_test-partial.pva -t 0.6 -acodec copy
FATE_TESTS += fate-qcp-demux FATE_TESTS += fate-qcp-demux
@ -180,18 +148,6 @@ FATE_TESTS += fate-qt-mac6-mono
fate-qt-mac6-mono: CMD = md5 -i $(SAMPLES)/qt-surge-suite/surge-1-8-MAC6.mov -f s16le fate-qt-mac6-mono: CMD = md5 -i $(SAMPLES)/qt-surge-suite/surge-1-8-MAC6.mov -f s16le
FATE_TESTS += fate-qt-mac6-stereo FATE_TESTS += fate-qt-mac6-stereo
fate-qt-mac6-stereo: CMD = md5 -i $(SAMPLES)/qt-surge-suite/surge-2-8-MAC6.mov -f s16le fate-qt-mac6-stereo: CMD = md5 -i $(SAMPLES)/qt-surge-suite/surge-2-8-MAC6.mov -f s16le
FATE_TESTS += fate-qt-msadpcm-stereo
fate-qt-msadpcm-stereo: CMD = md5 -i $(SAMPLES)/qt-surge-suite/surge-2-16-L-ms02.mov -f s16le
FATE_TESTS += fate-qt-msimaadpcm-stereo
fate-qt-msimaadpcm-stereo: CMD = md5 -i $(SAMPLES)/qt-surge-suite/surge-2-16-L-ms11.mov -f s16le
FATE_TESTS += fate-qt-rawpcm-16bit-stereo-signed-be
fate-qt-rawpcm-16bit-stereo-signed-be: CMD = md5 -i $(SAMPLES)/qt-surge-suite/surge-2-16-B-twos.mov -f s16le
FATE_TESTS += fate-qt-rawpcm-16bit-stereo-signed-le
fate-qt-rawpcm-16bit-stereo-signed-le: CMD = md5 -i $(SAMPLES)/qt-surge-suite/surge-2-16-L-sowt.mov -f s16le
FATE_TESTS += fate-qt-rawpcm-8bit-mono-unsigned
fate-qt-rawpcm-8bit-mono-unsigned: CMD = md5 -i $(SAMPLES)/qt-surge-suite/surge-1-8-raw.mov -f s16le
FATE_TESTS += fate-qt-rawpcm-8bit-stereo-unsigned
fate-qt-rawpcm-8bit-stereo-unsigned: CMD = md5 -i $(SAMPLES)/qt-surge-suite/surge-2-8-raw.mov -f s16le
FATE_TESTS += fate-qt-ulaw-mono FATE_TESTS += fate-qt-ulaw-mono
fate-qt-ulaw-mono: CMD = md5 -i $(SAMPLES)/qt-surge-suite/surge-1-16-B-ulaw.mov -f s16le fate-qt-ulaw-mono: CMD = md5 -i $(SAMPLES)/qt-surge-suite/surge-1-16-B-ulaw.mov -f s16le
FATE_TESTS += fate-qt-ulaw-stereo FATE_TESTS += fate-qt-ulaw-stereo
@ -222,8 +178,6 @@ FATE_TESTS += fate-svq1
fate-svq1: CMD = framecrc -i $(SAMPLES)/svq1/marymary-shackles.mov -an -t 10 fate-svq1: CMD = framecrc -i $(SAMPLES)/svq1/marymary-shackles.mov -an -t 10
FATE_TESTS += fate-svq3 FATE_TESTS += fate-svq3
fate-svq3: CMD = framecrc -i $(SAMPLES)/svq3/Vertical400kbit.sorenson3.mov -t 6 -an fate-svq3: CMD = framecrc -i $(SAMPLES)/svq3/Vertical400kbit.sorenson3.mov -t 6 -an
FATE_TESTS += fate-thp-mjpeg-adpcm
fate-thp-mjpeg-adpcm: CMD = framecrc -idct simple -i $(SAMPLES)/thp/pikmin2-opening1-partial.thp
FATE_TESTS += fate-tiertex-seq FATE_TESTS += fate-tiertex-seq
fate-tiertex-seq: CMD = framecrc -i $(SAMPLES)/tiertex-seq/Gameover.seq -pix_fmt rgb24 fate-tiertex-seq: CMD = framecrc -i $(SAMPLES)/tiertex-seq/Gameover.seq -pix_fmt rgb24
FATE_TESTS += fate-tmv FATE_TESTS += fate-tmv
@ -242,13 +196,9 @@ FATE_TESTS += fate-video-xl
fate-video-xl: CMD = framecrc -i $(SAMPLES)/vixl/pig-vixl.avi fate-video-xl: CMD = framecrc -i $(SAMPLES)/vixl/pig-vixl.avi
FATE_TESTS += fate-vqa-cc FATE_TESTS += fate-vqa-cc
fate-vqa-cc: CMD = framecrc -i $(SAMPLES)/vqa/cc-demo1-partial.vqa -pix_fmt rgb24 fate-vqa-cc: CMD = framecrc -i $(SAMPLES)/vqa/cc-demo1-partial.vqa -pix_fmt rgb24
FATE_TESTS += fate-w64
fate-w64: CMD = crc -i $(SAMPLES)/w64/w64-pcm16.w64
FATE_TESTS += fate-wc3movie-xan FATE_TESTS += fate-wc3movie-xan
fate-wc3movie-xan: CMD = framecrc -i $(SAMPLES)/wc3movie/SC_32-part.MVE -pix_fmt rgb24 fate-wc3movie-xan: CMD = framecrc -i $(SAMPLES)/wc3movie/SC_32-part.MVE -pix_fmt rgb24
FATE_TESTS += fate-westwood-aud FATE_TESTS += fate-westwood-aud
fate-westwood-aud: CMD = md5 -i $(SAMPLES)/westwood-aud/excellent.aud -f s16le fate-westwood-aud: CMD = md5 -i $(SAMPLES)/westwood-aud/excellent.aud -f s16le
FATE_TESTS += fate-wnv1 FATE_TESTS += fate-wnv1
fate-wnv1: CMD = framecrc -i $(SAMPLES)/wnv1/wnv1-codec.avi -an fate-wnv1: CMD = framecrc -i $(SAMPLES)/wnv1/wnv1-codec.avi -an
FATE_TESTS += fate-xan-dpcm
fate-xan-dpcm: CMD = md5 -i $(SAMPLES)/wc4-xan/wc4_2.avi -vn -f s16le

42
tests/fate/dpcm.mak Normal file
View File

@ -0,0 +1,42 @@
FATE_TESTS += fate-adpcm-ea-r2
fate-adpcm-ea-r2: CMD = crc -i $(SAMPLES)/ea-mpc/THX_logo.mpc -vn
FATE_TESTS += fate-adpcm-ea-r3
fate-adpcm-ea-r3: CMD = crc -i $(SAMPLES)/ea-vp6/THX_logo.vp6 -vn
FATE_TESTS += fate-creative-adpcm
fate-creative-adpcm: CMD = md5 -i $(SAMPLES)/creative/intro-partial.wav -f s16le
FATE_TESTS += fate-creative-adpcm-8-2bit
fate-creative-adpcm-8-2bit: CMD = md5 -i $(SAMPLES)/creative/BBC_2BIT.VOC -f s16le
FATE_TESTS += fate-creative-adpcm-8-2.6bit
fate-creative-adpcm-8-2.6bit: CMD = md5 -i $(SAMPLES)/creative/BBC_3BIT.VOC -f s16le
FATE_TESTS += fate-creative-adpcm-8-4bit
fate-creative-adpcm-8-4bit: CMD = md5 -i $(SAMPLES)/creative/BBC_4BIT.VOC -f s16le
FATE_TESTS += fate-ea-mad-adpcm-ea-r1
fate-ea-mad-adpcm-ea-r1: CMD = framecrc -i $(SAMPLES)/ea-mad/NFS6LogoE.mad
FATE_TESTS += fate-ea-tqi-adpcm
fate-ea-tqi-adpcm: CMD = framecrc -i $(SAMPLES)/ea-wve/networkBackbone-partial.wve -frames:v 26
FATE_TESTS += fate-idroq-video-dpcm
fate-idroq-video-dpcm: CMD = framecrc -i $(SAMPLES)/idroq/idlogo.roq
FATE_TESTS += fate-psx-str-v3-adpcm_xa
fate-psx-str-v3-adpcm_xa: CMD = framecrc -i $(SAMPLES)/psx-str/abc000_cut.str -vn
FATE_TESTS += fate-qt-msadpcm-stereo
fate-qt-msadpcm-stereo: CMD = md5 -i $(SAMPLES)/qt-surge-suite/surge-2-16-L-ms02.mov -f s16le
FATE_TESTS += fate-qt-msimaadpcm-stereo
fate-qt-msimaadpcm-stereo: CMD = md5 -i $(SAMPLES)/qt-surge-suite/surge-2-16-L-ms11.mov -f s16le
FATE_TESTS += fate-thp-mjpeg-adpcm
fate-thp-mjpeg-adpcm: CMD = framecrc -idct simple -i $(SAMPLES)/thp/pikmin2-opening1-partial.thp
FATE_TESTS += fate-dpcm_xan_audio
fate-dpcm_xan_audio: CMD = md5 -i $(SAMPLES)/wc4-xan/wc4_2.avi -vn -f s16le

View File

@ -16,3 +16,12 @@ fate-wmv8-drm-nodec: CMD = framecrc -cryptokey 137381538c84c068111902a59c5cf6c34
FATE_TESTS += fate-vc1 FATE_TESTS += fate-vc1
fate-vc1: CMD = framecrc -i $(SAMPLES)/vc1/SA00040.vc1 fate-vc1: CMD = framecrc -i $(SAMPLES)/vc1/SA00040.vc1
FATE_TESTS += fate-vc1_sa00050
fate-vc1_sa00050: CMD = framecrc -i $(SAMPLES)/vc1/SA00050.vc1
FATE_TESTS += fate-vc1_sa10091
fate-vc1_sa10091: CMD = framecrc -i $(SAMPLES)/vc1/SA10091.vc1
FATE_TESTS += fate-vc1_sa20021
fate-vc1_sa20021: CMD = framecrc -i $(SAMPLES)/vc1/SA20021.vc1

32
tests/fate/pcm.mak Normal file
View File

@ -0,0 +1,32 @@
FATE_TESTS += fate-duck-dk3
fate-duck-dk3: CMD = md5 -i $(SAMPLES)/duck/sop-audio-only.avi -f s16le
FATE_TESTS += fate-duck-dk4
fate-duck-dk4: CMD = md5 -i $(SAMPLES)/duck/salsa-audio-only.avi -f s16le
FATE_TESTS += fate-ea-mad-pcm-planar
fate-ea-mad-pcm-planar: CMD = framecrc -i $(SAMPLES)/ea-mad/xeasport.mad
FATE_TESTS += fate-film-cvid-pcm-stereo-8bit
fate-film-cvid-pcm-stereo-8bit: CMD = framecrc -i $(SAMPLES)/film/logo-capcom.cpk
FATE_TESTS += fate-iff-pcm
fate-iff-pcm: CMD = md5 -i $(SAMPLES)/iff/Bells -f s16le
FATE_TESTS += fate-pcm_dvd
fate-pcm_dvd: CMD = framecrc -i $(SAMPLES)/pcm-dvd/coolitnow-partial.vob -vn
FATE_TESTS += fate-qt-rawpcm-8bit-mono-unsigned
fate-qt-rawpcm-8bit-mono-unsigned: CMD = md5 -i $(SAMPLES)/qt-surge-suite/surge-1-8-raw.mov -f s16le
FATE_TESTS += fate-qt-rawpcm-8bit-stereo-unsigned
fate-qt-rawpcm-8bit-stereo-unsigned: CMD = md5 -i $(SAMPLES)/qt-surge-suite/surge-2-8-raw.mov -f s16le
FATE_TESTS += fate-qt-rawpcm-16bit-stereo-signed-be
fate-qt-rawpcm-16bit-stereo-signed-be: CMD = md5 -i $(SAMPLES)/qt-surge-suite/surge-2-16-B-twos.mov -f s16le
FATE_TESTS += fate-qt-rawpcm-16bit-stereo-signed-le
fate-qt-rawpcm-16bit-stereo-signed-le: CMD = md5 -i $(SAMPLES)/qt-surge-suite/surge-2-16-L-sowt.mov -f s16le
FATE_TESTS += fate-w64
fate-w64: CMD = crc -i $(SAMPLES)/w64/w64-pcm16.w64

View File

@ -87,3 +87,6 @@ fate-v410enc: CMD = md5 -f image2 -vcodec pgmyuv -i $(TARGET_PATH)/tests/vsynth1
FATE_TESTS += fate-r210 FATE_TESTS += fate-r210
fate-r210: CMD = framecrc -i $(SAMPLES)/r210/r210.avi -pix_fmt rgb48le fate-r210: CMD = framecrc -i $(SAMPLES)/r210/r210.avi -pix_fmt rgb48le
FATE_TESTS += fate-xxan_wc4_video
fate-xxan_wc4_video: CMD = framecrc -i $(SAMPLES)/wc4-xan/wc4_2.avi -an -vframes 10

View File

@ -0,0 +1,30 @@
0, 0, 115200, 0xb8830eef
0, 3600, 115200, 0xb8830eef
0, 7200, 115200, 0xb8830eef
0, 10800, 115200, 0x952ff5e1
0, 14400, 115200, 0xa4362b14
0, 18000, 115200, 0x32bacbe7
0, 21600, 115200, 0x509eb814
0, 25200, 115200, 0x509eb814
0, 28800, 115200, 0x11a76c3e
0, 32400, 115200, 0x11a76c3e
0, 36000, 115200, 0x00cf734a
0, 39600, 115200, 0x00cf734a
0, 43200, 115200, 0x00cf734a
0, 46800, 115200, 0x00cf734a
0, 50400, 115200, 0x00cf734a
0, 54000, 115200, 0x00cf734a
0, 57600, 115200, 0x00cf734a
0, 61200, 115200, 0x00cf734a
0, 64800, 115200, 0xfddf48e6
0, 68400, 115200, 0xfddf48e6
0, 72000, 115200, 0x1eccebbf
0, 75600, 115200, 0x3da2f77e
0, 79200, 115200, 0x7c232572
0, 82800, 115200, 0xedf426e5
0, 86400, 115200, 0x5324ab20
0, 90000, 115200, 0x5324ab20
0, 93600, 115200, 0xa23e66bb
0, 97200, 115200, 0x680a50ff
0, 100800, 115200, 0x680a50ff
0, 104400, 115200, 0x680a50ff

View File

@ -0,0 +1,30 @@
0, 0, 518400, 0xae20b4fa
0, 3600, 518400, 0x2b4ccdf9
0, 7200, 518400, 0x2b4ccdf9
0, 10800, 518400, 0x2b4ccdf9
0, 14400, 518400, 0x2b4ccdf9
0, 18000, 518400, 0x2b4ccdf9
0, 21600, 518400, 0x70d9a891
0, 25200, 518400, 0x70d9a891
0, 28800, 518400, 0x70d9a891
0, 32400, 518400, 0xa461ee86
0, 36000, 518400, 0x722bc6e8
0, 39600, 518400, 0x722bc6e8
0, 43200, 518400, 0x722bc6e8
0, 46800, 518400, 0xf752fd2c
0, 50400, 518400, 0xf752fd2c
0, 54000, 518400, 0x91abcaca
0, 57600, 518400, 0x572727c3
0, 61200, 518400, 0x572727c3
0, 64800, 518400, 0x24c12382
0, 68400, 518400, 0x24c12382
0, 72000, 518400, 0x9aa39fe8
0, 75600, 518400, 0x9aa39fe8
0, 79200, 518400, 0x5cb6bd19
0, 82800, 518400, 0x704d9300
0, 86400, 518400, 0x590fad49
0, 90000, 518400, 0x590fad49
0, 93600, 518400, 0x590fad49
0, 97200, 518400, 0x46bea10b
0, 100800, 518400, 0x46bea10b
0, 104400, 518400, 0x46bea10b

View File

@ -0,0 +1,60 @@
0, 0, 506880, 0x884bc093
0, 3600, 506880, 0x4b09548f
0, 7200, 506880, 0x195cbee1
0, 10800, 506880, 0xc8141e28
0, 14400, 506880, 0xb170c49b
0, 18000, 506880, 0x2782268a
0, 21600, 506880, 0x2782268a
0, 25200, 506880, 0x2782268a
0, 28800, 506880, 0x2782268a
0, 32400, 506880, 0xe6803b32
0, 36000, 506880, 0xe6803b32
0, 39600, 506880, 0xa5ef9baf
0, 43200, 506880, 0xa5ef9baf
0, 46800, 506880, 0x46e8cbcb
0, 50400, 506880, 0x28a2239b
0, 54000, 506880, 0x7667af2f
0, 57600, 506880, 0x7667af2f
0, 61200, 506880, 0x8011bcaf
0, 64800, 506880, 0xd422115b
0, 68400, 506880, 0xd422115b
0, 72000, 506880, 0xd422115b
0, 75600, 506880, 0xbcee0b5b
0, 79200, 506880, 0x08fe9ec8
0, 82800, 506880, 0xc8fb8b37
0, 86400, 506880, 0xc8fb8b37
0, 90000, 506880, 0x2c698b52
0, 93600, 506880, 0x2c698b52
0, 97200, 506880, 0x2c698b52
0, 100800, 506880, 0x2b4ad9bc
0, 104400, 506880, 0x2b4ad9bc
0, 108000, 506880, 0x2b4ad9bc
0, 111600, 506880, 0x2b4ad9bc
0, 115200, 506880, 0x92e84ebb
0, 118800, 506880, 0x92e84ebb
0, 122400, 506880, 0xdb877da3
0, 126000, 506880, 0xdb877da3
0, 129600, 506880, 0xdb877da3
0, 133200, 506880, 0x44610654
0, 136800, 506880, 0x44610654
0, 140400, 506880, 0xe254ce67
0, 144000, 506880, 0xa6085385
0, 147600, 506880, 0x2d45d744
0, 151200, 506880, 0x2d45d744
0, 154800, 506880, 0x6e684f51
0, 158400, 506880, 0xe96186cf
0, 162000, 506880, 0xb535d369
0, 165600, 506880, 0xb535d369
0, 169200, 506880, 0xb535d369
0, 172800, 506880, 0xeed0b7e0
0, 176400, 506880, 0xeed0b7e0
0, 180000, 506880, 0xeed0b7e0
0, 183600, 506880, 0xeed0b7e0
0, 187200, 506880, 0x8789b20b
0, 190800, 506880, 0x0a0f42fb
0, 194400, 506880, 0x09bbac2d
0, 198000, 506880, 0x09bbac2d
0, 201600, 506880, 0x09bbac2d
0, 205200, 506880, 0x09bbac2d
0, 208800, 506880, 0x09bbac2d
0, 212400, 506880, 0xda77f0df

View File

@ -0,0 +1,10 @@
0, 0, 79360, 0x877eb3ed
0, 6000, 79360, 0x9ff8707c
0, 12000, 79360, 0x144dec86
0, 18000, 79360, 0x56d59588
0, 24000, 79360, 0x2d20f8ce
0, 30000, 79360, 0x1a752c42
0, 36000, 79360, 0x85705730
0, 42000, 79360, 0xddea3741
0, 48000, 79360, 0x46448efd
0, 54000, 79360, 0x27186e2b