Commit 61930bd0 authored by Michael Niedermayer's avatar Michael Niedermayer

Merge remote-tracking branch 'qatar/master'

* qatar/master: (27 commits)
  libxvid: Give more suitable names to libxvid-related files.
  libxvid: Separate libxvid encoder from libxvid rate control code.
  jpeglsdec: Remove write-only variable in ff_jpegls_decode_lse().
  fate: cosmetics: lowercase some comments
  fate: Give more consistent names to some RealVideo/RealAudio tests.
  lavfi: add avfilter_get_audio_buffer_ref_from_arrays().
  lavfi: add extended_data to AVFilterBuffer.
  lavc: check that extended_data is properly set in avcodec_encode_audio2().
  lavc: pad last audio frame with silence when needed.
  samplefmt: add a function for filling a buffer with silence.
  samplefmt: add a function for copying audio samples.
  lavr: do not try to copy to uninitialized output audio data.
  lavr: make avresample_read() with NULL output discard samples.
  fate: split idroq audio and video into separate tests
  fate: improve dependencies
  fate: add convenient shorthands for ea-vp6, libavcodec, libavutil tests
  fate: split some combined tests into separate audio and video tests
  fate: fix dependencies for probe tests
  mips: intreadwrite: fix inline asm for gcc 4.8
  mips: intreadwrite: remove unnecessary inline asm
  ...

Conflicts:
	cmdutils.h
	configure
	doc/APIchanges
	doc/filters.texi
	ffmpeg.c
	ffplay.c
	libavcodec/internal.h
	libavcodec/jpeglsdec.c
	libavcodec/libschroedingerdec.c
	libavcodec/libxvid.c
	libavcodec/libxvid_rc.c
	libavcodec/utils.c
	libavcodec/version.h
	libavfilter/avfilter.c
	libavfilter/avfilter.h
	libavfilter/buffersink.h
	tests/Makefile
	tests/fate/aac.mak
	tests/fate/audio.mak
	tests/fate/demux.mak
	tests/fate/ea.mak
	tests/fate/image.mak
	tests/fate/libavutil.mak
	tests/fate/lossless-audio.mak
	tests/fate/lossless-video.mak
	tests/fate/microsoft.mak
	tests/fate/qt.mak
	tests/fate/real.mak
	tests/fate/screen.mak
	tests/fate/video.mak
	tests/fate/voice.mak
	tests/fate/vqf.mak
	tests/ref/fate/ea-mad
	tests/ref/fate/ea-tqi
Merged-by: 's avatarMichael Niedermayer <michaelni@gmx.at>
parents 35894ebb c8b4a399
...@@ -370,7 +370,6 @@ int cmdutils_read_file(const char *filename, char **bufptr, size_t *size); ...@@ -370,7 +370,6 @@ int cmdutils_read_file(const char *filename, char **bufptr, size_t *size);
FILE *get_preset_file(char *filename, size_t filename_size, FILE *get_preset_file(char *filename, size_t filename_size,
const char *preset_name, int is_path, const char *codec_name); const char *preset_name, int is_path, const char *codec_name);
/** /**
* Do all the necessary cleanup and abort. * Do all the necessary cleanup and abort.
* This function is implemented in the avtools, not cmdutils. * This function is implemented in the avtools, not cmdutils.
......
...@@ -1217,6 +1217,7 @@ HAVE_LIST=" ...@@ -1217,6 +1217,7 @@ HAVE_LIST="
memalign memalign
mkstemp mkstemp
mmap mmap
netinet_sctp_h
PeekNamedPipe PeekNamedPipe
poll_h poll_h
posix_memalign posix_memalign
...@@ -1662,6 +1663,7 @@ mmst_protocol_deps="network" ...@@ -1662,6 +1663,7 @@ mmst_protocol_deps="network"
rtmp_protocol_deps="!librtmp_protocol" rtmp_protocol_deps="!librtmp_protocol"
rtmp_protocol_select="tcp_protocol" rtmp_protocol_select="tcp_protocol"
rtp_protocol_select="udp_protocol" rtp_protocol_select="udp_protocol"
sctp_protocol_deps="network netinet_sctp_h"
tcp_protocol_deps="network" tcp_protocol_deps="network"
tls_protocol_deps_any="openssl gnutls" tls_protocol_deps_any="openssl gnutls"
tls_protocol_select="tcp_protocol" tls_protocol_select="tcp_protocol"
...@@ -1707,7 +1709,7 @@ ffplay_select="buffersink_filter rdft" ...@@ -1707,7 +1709,7 @@ ffplay_select="buffersink_filter rdft"
ffprobe_deps="avcodec avformat" ffprobe_deps="avcodec avformat"
ffserver_deps="avformat ffm_muxer fork rtp_protocol rtsp_demuxer" ffserver_deps="avformat ffm_muxer fork rtp_protocol rtsp_demuxer"
ffserver_extralibs='$ldl' ffserver_extralibs='$ldl'
ffmpeg_deps="avcodec avfilter avformat swscale swresample" ffmpeg_deps="avcodec avfilter avformat swscale swresample format_filter"
ffmpeg_select="buffersink_filter" ffmpeg_select="buffersink_filter"
doc_deps="texi2html" doc_deps="texi2html"
...@@ -3060,6 +3062,7 @@ if enabled network; then ...@@ -3060,6 +3062,7 @@ if enabled network; then
check_type netinet/in.h "struct sockaddr_in6" check_type netinet/in.h "struct sockaddr_in6"
check_type "sys/types.h sys/socket.h" "struct sockaddr_storage" check_type "sys/types.h sys/socket.h" "struct sockaddr_storage"
check_struct "sys/types.h sys/socket.h" "struct sockaddr" sa_len check_struct "sys/types.h sys/socket.h" "struct sockaddr" sa_len
check_header netinet/sctp.h
# Prefer arpa/inet.h over winsock2 # Prefer arpa/inet.h over winsock2
if check_header arpa/inet.h ; then if check_header arpa/inet.h ; then
check_func closesocket check_func closesocket
......
...@@ -24,6 +24,12 @@ API changes, most recent first: ...@@ -24,6 +24,12 @@ API changes, most recent first:
2012-03-26 - a67d9cf - lavfi 2.66.100 2012-03-26 - a67d9cf - lavfi 2.66.100
Add avfilter_fill_frame_from_{audio_,}buffer_ref() functions. Add avfilter_fill_frame_from_{audio_,}buffer_ref() functions.
2012-xx-xx - xxxxxxx - lavc 54.13.1
For audio formats with fixed frame size, the last frame
no longer needs to be padded with silence, libavcodec
will handle this internally (effectively all encoders
behave as if they had CODEC_CAP_SMALL_LAST_FRAME set).
2012-xx-xx - xxxxxxx - lavr 0.0.1 2012-xx-xx - xxxxxxx - lavr 0.0.1
Change AV_MIX_COEFF_TYPE_Q6 to AV_MIX_COEFF_TYPE_Q8. Change AV_MIX_COEFF_TYPE_Q6 to AV_MIX_COEFF_TYPE_Q8.
......
...@@ -938,7 +938,7 @@ frame rate or decrease the frame size. ...@@ -938,7 +938,7 @@ frame rate or decrease the frame size.
@item @item
If your computer is not fast enough, you can speed up the If your computer is not fast enough, you can speed up the
compression at the expense of the compression ratio. You can use compression at the expense of the compression ratio. You can use
'-me zero' to speed up motion estimation, and '-intra' to disable '-me zero' to speed up motion estimation, and '-g 0' to disable
motion estimation completely (you have only I-frames, which means it motion estimation completely (you have only I-frames, which means it
is about as good as JPEG compression). is about as good as JPEG compression).
......
...@@ -704,21 +704,34 @@ static enum PixelFormat choose_pixel_fmt(AVStream *st, AVCodec *codec, enum Pixe ...@@ -704,21 +704,34 @@ static enum PixelFormat choose_pixel_fmt(AVStream *st, AVCodec *codec, enum Pixe
return target; return target;
} }
static const enum PixelFormat *choose_pixel_fmts(OutputStream *ost) static char *choose_pixel_fmts(OutputStream *ost)
{ {
if (ost->st->codec->pix_fmt != PIX_FMT_NONE) { if (ost->st->codec->pix_fmt != PIX_FMT_NONE) {
ost->pix_fmts[0] = choose_pixel_fmt(ost->st, ost->enc, ost->st->codec->pix_fmt); return av_strdup(av_get_pix_fmt_name(choose_pixel_fmt(ost->st, ost->enc, ost->st->codec->pix_fmt)));
return ost->pix_fmts;
} else if (ost->enc->pix_fmts) { } else if (ost->enc->pix_fmts) {
const enum PixelFormat *p;
AVIOContext *s = NULL;
uint8_t *ret;
int len;
if (avio_open_dyn_buf(&s) < 0)
exit_program(1);
p = ost->enc->pix_fmts;
if (ost->st->codec->strict_std_compliance <= FF_COMPLIANCE_UNOFFICIAL) { if (ost->st->codec->strict_std_compliance <= FF_COMPLIANCE_UNOFFICIAL) {
if (ost->st->codec->codec_id == CODEC_ID_MJPEG) { if (ost->st->codec->codec_id == CODEC_ID_MJPEG) {
return (const enum PixelFormat[]) { PIX_FMT_YUVJ420P, PIX_FMT_YUVJ422P, PIX_FMT_YUV420P, PIX_FMT_YUV422P, PIX_FMT_NONE }; p = (const enum PixelFormat[]) { PIX_FMT_YUVJ420P, PIX_FMT_YUVJ422P, PIX_FMT_YUV420P, PIX_FMT_YUV422P, PIX_FMT_NONE };
} else if (ost->st->codec->codec_id == CODEC_ID_LJPEG) { } else if (ost->st->codec->codec_id == CODEC_ID_LJPEG) {
return (const enum PixelFormat[]) { PIX_FMT_YUVJ420P, PIX_FMT_YUVJ422P, PIX_FMT_YUVJ444P, PIX_FMT_YUV420P, p = (const enum PixelFormat[]) { PIX_FMT_YUVJ420P, PIX_FMT_YUVJ422P, PIX_FMT_YUVJ444P, PIX_FMT_YUV420P,
PIX_FMT_YUV422P, PIX_FMT_YUV444P, PIX_FMT_BGRA, PIX_FMT_NONE }; PIX_FMT_YUV422P, PIX_FMT_YUV444P, PIX_FMT_BGRA, PIX_FMT_NONE };
} }
} }
return ost->enc->pix_fmts;
for (; *p != PIX_FMT_NONE; p++)
avio_printf(s, "%s:", av_get_pix_fmt_name(*p));
len = avio_close_dyn_buf(s, &ret);
ret[len - 1] = 0;
return ret;
} else } else
return NULL; return NULL;
} }
...@@ -727,10 +740,10 @@ static int configure_video_filters(FilterGraph *fg) ...@@ -727,10 +740,10 @@ static int configure_video_filters(FilterGraph *fg)
{ {
InputStream *ist = fg->inputs[0]->ist; InputStream *ist = fg->inputs[0]->ist;
OutputStream *ost = fg->outputs[0]->ost; OutputStream *ost = fg->outputs[0]->ost;
AVFilterContext *last_filter, *filter; AVFilterContext *in_filter, *out_filter, *filter;
AVCodecContext *codec = ost->st->codec; AVCodecContext *codec = ost->st->codec;
enum PixelFormat *pix_fmts = choose_pixel_fmts(ost);
AVBufferSinkParams *buffersink_params = av_buffersink_params_alloc(); AVBufferSinkParams *buffersink_params = av_buffersink_params_alloc();
char *pix_fmts;
AVRational sample_aspect_ratio; AVRational sample_aspect_ratio;
char args[255]; char args[255];
int ret; int ret;
...@@ -756,18 +769,20 @@ static int configure_video_filters(FilterGraph *fg) ...@@ -756,18 +769,20 @@ static int configure_video_filters(FilterGraph *fg)
return ret; return ret;
#if FF_API_OLD_VSINK_API #if FF_API_OLD_VSINK_API
ret = avfilter_graph_create_filter(&fg->outputs[0]->filter, avfilter_get_by_name("buffersink"), ret = avfilter_graph_create_filter(&fg->outputs[0]->filter,
"out", NULL, pix_fmts, fg->graph); avfilter_get_by_name("buffersink"),
"out", NULL, NULL, fg->graph);
#else #else
buffersink_params->pixel_fmts = pix_fmts; ret = avfilter_graph_create_filter(&fg->outputs[0]->filter,
ret = avfilter_graph_create_filter(&fg->outputs[0]->filter, avfilter_get_by_name("buffersink"), avfilter_get_by_name("buffersink"),
"out", NULL, buffersink_params, fg->graph); "out", NULL, buffersink_params, fg->graph);
#endif #endif
av_freep(&buffersink_params); av_freep(&buffersink_params);
if (ret < 0) if (ret < 0)
return ret; return ret;
last_filter = fg->inputs[0]->filter; in_filter = fg->inputs[0]->filter;
out_filter = fg->outputs[0]->filter;
if (codec->width || codec->height) { if (codec->width || codec->height) {
snprintf(args, 255, "%d:%d:flags=0x%X", snprintf(args, 255, "%d:%d:flags=0x%X",
...@@ -777,9 +792,22 @@ static int configure_video_filters(FilterGraph *fg) ...@@ -777,9 +792,22 @@ static int configure_video_filters(FilterGraph *fg)
if ((ret = avfilter_graph_create_filter(&filter, avfilter_get_by_name("scale"), if ((ret = avfilter_graph_create_filter(&filter, avfilter_get_by_name("scale"),
NULL, args, NULL, fg->graph)) < 0) NULL, args, NULL, fg->graph)) < 0)
return ret; return ret;
if ((ret = avfilter_link(last_filter, 0, filter, 0)) < 0) if ((ret = avfilter_link(in_filter, 0, filter, 0)) < 0)
return ret; return ret;
last_filter = filter; in_filter = filter;
}
if ((pix_fmts = choose_pixel_fmts(ost))) {
if ((ret = avfilter_graph_create_filter(&filter,
avfilter_get_by_name("format"),
"format", pix_fmts, NULL,
fg->graph)) < 0)
return ret;
if ((ret = avfilter_link(filter, 0, out_filter, 0)) < 0)
return ret;
out_filter = filter;
av_freep(&pix_fmts);
} }
snprintf(args, sizeof(args), "flags=0x%X", (unsigned)ost->sws_flags); snprintf(args, sizeof(args), "flags=0x%X", (unsigned)ost->sws_flags);
...@@ -790,12 +818,12 @@ static int configure_video_filters(FilterGraph *fg) ...@@ -790,12 +818,12 @@ static int configure_video_filters(FilterGraph *fg)
AVFilterInOut *inputs = avfilter_inout_alloc(); AVFilterInOut *inputs = avfilter_inout_alloc();
outputs->name = av_strdup("in"); outputs->name = av_strdup("in");
outputs->filter_ctx = last_filter; outputs->filter_ctx = in_filter;
outputs->pad_idx = 0; outputs->pad_idx = 0;
outputs->next = NULL; outputs->next = NULL;
inputs->name = av_strdup("out"); inputs->name = av_strdup("out");
inputs->filter_ctx = fg->outputs[0]->filter; inputs->filter_ctx = out_filter;
inputs->pad_idx = 0; inputs->pad_idx = 0;
inputs->next = NULL; inputs->next = NULL;
...@@ -803,7 +831,7 @@ static int configure_video_filters(FilterGraph *fg) ...@@ -803,7 +831,7 @@ static int configure_video_filters(FilterGraph *fg)
return ret; return ret;
av_freep(&ost->avfilter); av_freep(&ost->avfilter);
} else { } else {
if ((ret = avfilter_link(last_filter, 0, fg->outputs[0]->filter, 0)) < 0) if ((ret = avfilter_link(in_filter, 0, out_filter, 0)) < 0)
return ret; return ret;
} }
...@@ -919,19 +947,20 @@ static void init_input_filter(FilterGraph *fg, AVFilterInOut *in) ...@@ -919,19 +947,20 @@ static void init_input_filter(FilterGraph *fg, AVFilterInOut *in)
static int configure_output_filter(FilterGraph *fg, OutputFilter *ofilter, AVFilterInOut *out) static int configure_output_filter(FilterGraph *fg, OutputFilter *ofilter, AVFilterInOut *out)
{ {
char *pix_fmts;
AVCodecContext *codec = ofilter->ost->st->codec; AVCodecContext *codec = ofilter->ost->st->codec;
AVFilterContext *last_filter = out->filter_ctx; AVFilterContext *last_filter = out->filter_ctx;
int pad_idx = out->pad_idx; int pad_idx = out->pad_idx;
int ret; int ret;
enum PixelFormat *pix_fmts = choose_pixel_fmts(ofilter->ost);
AVBufferSinkParams *buffersink_params = av_buffersink_params_alloc(); AVBufferSinkParams *buffersink_params = av_buffersink_params_alloc();
#if FF_API_OLD_VSINK_API #if FF_API_OLD_VSINK_API
ret = avfilter_graph_create_filter(&ofilter->filter, avfilter_get_by_name("buffersink"), ret = avfilter_graph_create_filter(&ofilter->filter,
"out", NULL, pix_fmts, fg->graph); avfilter_get_by_name("buffersink"),
"out", NULL, NULL, fg->graph);
#else #else
buffersink_params->pixel_fmts = pix_fmts; ret = avfilter_graph_create_filter(&ofilter->filter,
ret = avfilter_graph_create_filter(&ofilter->filter, avfilter_get_by_name("buffersink"), avfilter_get_by_name("buffersink"),
"out", NULL, buffersink_params, fg->graph); "out", NULL, buffersink_params, fg->graph);
#endif #endif
av_freep(&buffersink_params); av_freep(&buffersink_params);
...@@ -941,16 +970,35 @@ static int configure_output_filter(FilterGraph *fg, OutputFilter *ofilter, AVFil ...@@ -941,16 +970,35 @@ static int configure_output_filter(FilterGraph *fg, OutputFilter *ofilter, AVFil
if (codec->width || codec->height) { if (codec->width || codec->height) {
char args[255]; char args[255];
AVFilterContext *filter;
snprintf(args, sizeof(args), "%d:%d:flags=0x%X", snprintf(args, sizeof(args), "%d:%d:flags=0x%X",
codec->width, codec->width,
codec->height, codec->height,
(unsigned)ofilter->ost->sws_flags); (unsigned)ofilter->ost->sws_flags);
if ((ret = avfilter_graph_create_filter(&last_filter, avfilter_get_by_name("scale"), if ((ret = avfilter_graph_create_filter(&filter, avfilter_get_by_name("scale"),
NULL, args, NULL, fg->graph)) < 0) NULL, args, NULL, fg->graph)) < 0)
return ret; return ret;
if ((ret = avfilter_link(out->filter_ctx, out->pad_idx, last_filter, 0)) < 0) if ((ret = avfilter_link(last_filter, pad_idx, filter, 0)) < 0)
return ret;
last_filter = filter;
pad_idx = 0;
}
if ((pix_fmts = choose_pixel_fmts(ofilter->ost))) {
AVFilterContext *filter;
if ((ret = avfilter_graph_create_filter(&filter,
avfilter_get_by_name("format"),
"format", pix_fmts, NULL,
fg->graph)) < 0)
return ret;
if ((ret = avfilter_link(last_filter, pad_idx, filter, 0)) < 0)
return ret; return ret;
last_filter = filter;
pad_idx = 0; pad_idx = 0;
av_freep(&pix_fmts);
} }
if ((ret = avfilter_link(last_filter, pad_idx, ofilter->filter, 0)) < 0) if ((ret = avfilter_link(last_filter, pad_idx, ofilter->filter, 0)) < 0)
...@@ -2299,14 +2347,6 @@ static void flush_encoders(void) ...@@ -2299,14 +2347,6 @@ static void flush_encoders(void)
av_fifo_generic_read(ost->fifo, audio_buf, fifo_bytes, NULL); av_fifo_generic_read(ost->fifo, audio_buf, fifo_bytes, NULL);
/* pad last frame with silence if needed */
if (!(enc->codec->capabilities & CODEC_CAP_SMALL_LAST_FRAME)) {
frame_bytes = enc->frame_size * enc->channels *
av_get_bytes_per_sample(enc->sample_fmt);
if (allocated_audio_buf_size < frame_bytes)
exit_program(1);
generate_silence(audio_buf+fifo_bytes, enc->sample_fmt, frame_bytes - fifo_bytes);
}
encode_audio_frame(os, ost, audio_buf, frame_bytes); encode_audio_frame(os, ost, audio_buf, frame_bytes);
} else { } else {
/* flush encoder with NULL frames until it is done /* flush encoder with NULL frames until it is done
......
...@@ -1747,7 +1747,7 @@ static int configure_video_filters(AVFilterGraph *graph, VideoState *is, const c ...@@ -1747,7 +1747,7 @@ static int configure_video_filters(AVFilterGraph *graph, VideoState *is, const c
char sws_flags_str[128]; char sws_flags_str[128];
int ret; int ret;
AVBufferSinkParams *buffersink_params = av_buffersink_params_alloc(); AVBufferSinkParams *buffersink_params = av_buffersink_params_alloc();
AVFilterContext *filt_src = NULL, *filt_out = NULL; AVFilterContext *filt_src = NULL, *filt_out = NULL, *filt_format;;
snprintf(sws_flags_str, sizeof(sws_flags_str), "flags=%d", sws_flags); snprintf(sws_flags_str, sizeof(sws_flags_str), "flags=%d", sws_flags);
graph->scale_sws_opts = av_strdup(sws_flags_str); graph->scale_sws_opts = av_strdup(sws_flags_str);
...@@ -1756,17 +1756,27 @@ static int configure_video_filters(AVFilterGraph *graph, VideoState *is, const c ...@@ -1756,17 +1756,27 @@ static int configure_video_filters(AVFilterGraph *graph, VideoState *is, const c
return ret; return ret;
#if FF_API_OLD_VSINK_API #if FF_API_OLD_VSINK_API
ret = avfilter_graph_create_filter(&filt_out, avfilter_get_by_name("buffersink"), "out", ret = avfilter_graph_create_filter(&filt_out,
NULL, pix_fmts, graph); avfilter_get_by_name("buffersink"),
"out", NULL, pix_fmts, graph);
#else #else
buffersink_params->pixel_fmts = pix_fmts; buffersink_params->pixel_fmts = pix_fmts;
ret = avfilter_graph_create_filter(&filt_out, avfilter_get_by_name("buffersink"), "out", ret = avfilter_graph_create_filter(&filt_out,
NULL, buffersink_params, graph); avfilter_get_by_name("buffersink"),
"out", NULL, buffersink_params, graph);
#endif #endif
av_freep(&buffersink_params); av_freep(&buffersink_params);
if (ret < 0) if (ret < 0)
return ret; return ret;
if ((ret = avfilter_graph_create_filter(&filt_format,
avfilter_get_by_name("format"),
"format", "yuv420p", NULL, graph)) < 0)
return ret;
if ((ret = avfilter_link(filt_format, 0, filt_out, 0)) < 0)
return ret;
if (vfilters) { if (vfilters) {
AVFilterInOut *outputs = avfilter_inout_alloc(); AVFilterInOut *outputs = avfilter_inout_alloc();
AVFilterInOut *inputs = avfilter_inout_alloc(); AVFilterInOut *inputs = avfilter_inout_alloc();
...@@ -1777,14 +1787,14 @@ static int configure_video_filters(AVFilterGraph *graph, VideoState *is, const c ...@@ -1777,14 +1787,14 @@ static int configure_video_filters(AVFilterGraph *graph, VideoState *is, const c
outputs->next = NULL; outputs->next = NULL;
inputs->name = av_strdup("out"); inputs->name = av_strdup("out");
inputs->filter_ctx = filt_out; inputs->filter_ctx = filt_format;
inputs->pad_idx = 0; inputs->pad_idx = 0;
inputs->next = NULL; inputs->next = NULL;
if ((ret = avfilter_graph_parse(graph, vfilters, &inputs, &outputs, NULL)) < 0) if ((ret = avfilter_graph_parse(graph, vfilters, &inputs, &outputs, NULL)) < 0)
return ret; return ret;
} else { } else {
if ((ret = avfilter_link(filt_src, 0, filt_out, 0)) < 0) if ((ret = avfilter_link(filt_src, 0, filt_format, 0)) < 0)
return ret; return ret;
} }
...@@ -1843,8 +1853,11 @@ static int video_thread(void *arg) ...@@ -1843,8 +1853,11 @@ static int video_thread(void *arg)
if (picref) { if (picref) {
avfilter_fill_frame_from_video_buffer_ref(frame, picref); avfilter_fill_frame_from_video_buffer_ref(frame, picref);
pts_int = picref->pts; pts_int = picref->pts;
tb = filt_out->inputs[0]->time_base;
pos = picref->pos; pos = picref->pos;
frame->opaque = picref; frame->opaque = picref;
ret = 1;
} }
if (ret >= 0 && av_cmp_q(tb, is->video_st->time_base)) { if (ret >= 0 && av_cmp_q(tb, is->video_st->time_base)) {
......
...@@ -46,6 +46,7 @@ OBJS-$(CONFIG_GOLOMB) += golomb.o ...@@ -46,6 +46,7 @@ OBJS-$(CONFIG_GOLOMB) += golomb.o
OBJS-$(CONFIG_H264DSP) += h264dsp.o h264idct.o OBJS-$(CONFIG_H264DSP) += h264dsp.o h264idct.o
OBJS-$(CONFIG_H264PRED) += h264pred.o OBJS-$(CONFIG_H264PRED) += h264pred.o
OBJS-$(CONFIG_HUFFMAN) += huffman.o OBJS-$(CONFIG_HUFFMAN) += huffman.o
OBJS-$(CONFIG_LIBXVID) += libxvid_rc.o
OBJS-$(CONFIG_LPC) += lpc.o OBJS-$(CONFIG_LPC) += lpc.o
OBJS-$(CONFIG_LSP) += lsp.o OBJS-$(CONFIG_LSP) += lsp.o
OBJS-$(CONFIG_MDCT) += mdct_fixed.o mdct_float.o OBJS-$(CONFIG_MDCT) += mdct_fixed.o mdct_float.o
...@@ -677,7 +678,7 @@ OBJS-$(CONFIG_LIBVPX_DECODER) += libvpxdec.o ...@@ -677,7 +678,7 @@ OBJS-$(CONFIG_LIBVPX_DECODER) += libvpxdec.o
OBJS-$(CONFIG_LIBVPX_ENCODER) += libvpxenc.o OBJS-$(CONFIG_LIBVPX_ENCODER) += libvpxenc.o
OBJS-$(CONFIG_LIBX264_ENCODER) += libx264.o OBJS-$(CONFIG_LIBX264_ENCODER) += libx264.o
OBJS-$(CONFIG_LIBXAVS_ENCODER) += libxavs.o OBJS-$(CONFIG_LIBXAVS_ENCODER) += libxavs.o
OBJS-$(CONFIG_LIBXVID) += libxvidff.o libxvid_rc.o OBJS-$(CONFIG_LIBXVID_ENCODER) += libxvid.o
# parsers # parsers
OBJS-$(CONFIG_AAC_PARSER) += aac_parser.o aac_ac3_parser.o \ OBJS-$(CONFIG_AAC_PARSER) += aac_parser.o aac_ac3_parser.o \
......
...@@ -4044,15 +4044,11 @@ int attribute_deprecated avcodec_encode_audio(AVCodecContext *avctx, ...@@ -4044,15 +4044,11 @@ int attribute_deprecated avcodec_encode_audio(AVCodecContext *avctx,
* @param[in] frame AVFrame containing the raw audio data to be encoded. * @param[in] frame AVFrame containing the raw audio data to be encoded.
* May be NULL when flushing an encoder that has the * May be NULL when flushing an encoder that has the
* CODEC_CAP_DELAY capability set. * CODEC_CAP_DELAY capability set.
* There are 2 codec capabilities that affect the allowed
* values of frame->nb_samples.
* If CODEC_CAP_SMALL_LAST_FRAME is set, then only the final
* frame may be smaller than avctx->frame_size, and all other
* frames must be equal to avctx->frame_size.
* If CODEC_CAP_VARIABLE_FRAME_SIZE is set, then each frame * If CODEC_CAP_VARIABLE_FRAME_SIZE is set, then each frame
* can have any number of samples. * can have any number of samples.
* If neither is set, frame->nb_samples must be equal to * If it is not set, frame->nb_samples must be equal to
* avctx->frame_size for all frames. * avctx->frame_size for all frames except the last.
* The final frame may be smaller than avctx->frame_size.
* @param[out] got_packet_ptr This field is set to 1 by libavcodec if the * @param[out] got_packet_ptr This field is set to 1 by libavcodec if the
* output packet is non-empty, and to 0 if it is * output packet is non-empty, and to 0 if it is
* empty. If the function returns an error, the * empty. If the function returns an error, the
......
...@@ -71,6 +71,12 @@ typedef struct AVCodecInternal { ...@@ -71,6 +71,12 @@ typedef struct AVCodecInternal {
int sample_count; int sample_count;
#endif #endif
/**
* An audio frame with less than required samples has been submitted and
* padded with silence. Reject all subsequent frames.
*/
int last_audio_frame;
/** /**
* temporary buffer used for encoders to store their bitstream * temporary buffer used for encoders to store their bitstream
*/ */
......
...@@ -51,10 +51,9 @@ ...@@ -51,10 +51,9 @@
*/ */
int ff_jpegls_decode_lse(MJpegDecodeContext *s) int ff_jpegls_decode_lse(MJpegDecodeContext *s)
{ {
int av_unused(len), id; int id;
/* XXX: verify len field validity */ skip_bits(&s->gb, 16); /* length: FIXME: verify field validity */
len = get_bits(&s->gb, 16);
id = get_bits(&s->gb, 8); id = get_bits(&s->gb, 8);
switch(id){ switch(id){
......
...@@ -28,6 +28,7 @@ ...@@ -28,6 +28,7 @@
*/ */
#include "libavutil/imgutils.h" #include "libavutil/imgutils.h"
#include "libavutil/intreadwrite.h"
#include "avcodec.h" #include "avcodec.h"
#include "libschroedinger.h" #include "libschroedinger.h"
...@@ -39,6 +40,12 @@ ...@@ -39,6 +40,12 @@
#include <schroedinger/schrodebug.h> #include <schroedinger/schrodebug.h>
#include <schroedinger/schrovideoformat.h> #include <schroedinger/schrovideoformat.h>
/** SchroFrame and Pts relation */
typedef struct LibSchroFrameContext {
SchroFrame *frame;
int64_t pts;
} LibSchroFrameContext;
/** libschroedinger decoder private data */ /** libschroedinger decoder private data */
typedef struct SchroDecoderParams { typedef struct SchroDecoderParams {
/** Schroedinger video format */ /** Schroedinger video format */
...@@ -60,7 +67,7 @@ typedef struct SchroDecoderParams { ...@@ -60,7 +67,7 @@ typedef struct SchroDecoderParams {
int eos_pulled; int eos_pulled;
/** decoded picture */ /** decoded picture */
AVPicture dec_pic; AVFrame dec_frame;
} SchroDecoderParams; } SchroDecoderParams;
typedef struct SchroParseUnitContext { typedef struct SchroParseUnitContext {
...@@ -171,8 +178,8 @@ static void libschroedinger_handle_first_access_unit(AVCodecContext *avccontext) ...@@ -171,8 +178,8 @@ static void libschroedinger_handle_first_access_unit(AVCodecContext *avccontext)
p_schro_params->format = schro_decoder_get_video_format(decoder); p_schro_params->format = schro_decoder_get_video_format(decoder);
/* Tell FFmpeg about sequence details. */ /* Tell FFmpeg about sequence details. */
if (av_image_check_size(p_schro_params->format->width, p_schro_params->format->height, if (av_image_check_size(p_schro_params->format->width,
0, avccontext) < 0) { p_schro_params->format->height, 0, avccontext) < 0) {
av_log(avccontext, AV_LOG_ERROR, "invalid dimensions (%dx%d)\n", av_log(avccontext, AV_LOG_ERROR, "invalid dimensions (%dx%d)\n",
p_schro_params->format->width, p_schro_params->format->height); p_schro_params->format->width, p_schro_params->format->height);
avccontext->height = avccontext->width = 0; avccontext->height = avccontext->width = 0;
...@@ -192,12 +199,6 @@ static void libschroedinger_handle_first_access_unit(AVCodecContext *avccontext) ...@@ -192,12 +199,6 @@ static void libschroedinger_handle_first_access_unit(AVCodecContext *avccontext)
avccontext->time_base.den = p_schro_params->format->frame_rate_numerator; avccontext->time_base.den = p_schro_params->format->frame_rate_numerator;
avccontext->time_base.num = p_schro_params->format->frame_rate_denominator; avccontext->time_base.num = p_schro_params->format->frame_rate_denominator;
if (!p_schro_params->dec_pic.data[0])
avpicture_alloc(&p_schro_params->dec_pic,
avccontext->pix_fmt,
avccontext->width,
avccontext->height);
} }
static int libschroedinger_decode_frame(AVCodecContext *avccontext, static int libschroedinger_decode_frame(AVCodecContext *avccontext,
...@@ -206,16 +207,18 @@ static int libschroedinger_decode_frame(AVCodecContext *avccontext, ...@@ -206,16 +207,18 @@ static int libschroedinger_decode_frame(AVCodecContext *avccontext,
{ {
const uint8_t *buf = avpkt->data; const uint8_t *buf = avpkt->data;
int buf_size = avpkt->size; int buf_size = avpkt->size;
int64_t pts = avpkt->pts;
SchroTag *tag;
SchroDecoderParams *p_schro_params = avccontext->priv_data; SchroDecoderParams *p_schro_params = avccontext->priv_data;
SchroDecoder *decoder = p_schro_params->decoder; SchroDecoder *decoder = p_schro_params->decoder;
AVPicture *picture = data;
SchroBuffer *enc_buf; SchroBuffer *enc_buf;
SchroFrame* frame; SchroFrame* frame;
int state; int state;
int go = 1; int go = 1;
int outer = 1; int outer = 1;
SchroParseUnitContext parse_ctx; SchroParseUnitContext parse_ctx;
LibSchroFrameContext *framewithpts = NULL;
*data_size = 0; *data_size = 0;
...@@ -230,6 +233,13 @@ static int libschroedinger_decode_frame(AVCodecContext *avccontext, ...@@ -230,6 +233,13 @@ static int libschroedinger_decode_frame(AVCodecContext *avccontext,
/* Loop through all the individual parse units in the input buffer */ /* Loop through all the individual parse units in the input buffer */
do { do {
if ((enc_buf = find_next_parse_unit(&parse_ctx))) { if ((enc_buf = find_next_parse_unit(&parse_ctx))) {
/* Set Schrotag with the pts to be recovered after decoding*/
enc_buf->tag = schro_tag_new(av_malloc(sizeof(int64_t)), av_free);
if (!enc_buf->tag->value) {
av_log(avccontext, AV_LOG_ERROR, "Unable to allocate SchroTag\n");
return AVERROR(ENOMEM);
}
AV_WN(64, enc_buf->tag->value, pts);
/* Push buffer into decoder. */ /* Push buffer into decoder. */
if (SCHRO_PARSE_CODE_IS_PICTURE(enc_buf->data[4]) && if (SCHRO_PARSE_CODE_IS_PICTURE(enc_buf->data[4]) &&
SCHRO_PARSE_CODE_NUM_REFS(enc_buf->data[4]) > 0) SCHRO_PARSE_CODE_NUM_REFS(enc_buf->data[4]) > 0)
...@@ -263,11 +273,21 @@ static int libschroedinger_decode_frame(AVCodecContext *avccontext, ...@@ -263,11 +273,21 @@ static int libschroedinger_decode_frame(AVCodecContext *avccontext,
case SCHRO_DECODER_OK: case SCHRO_DECODER_OK:
/* Pull a frame out of the decoder. */ /* Pull a frame out of the decoder. */
tag = schro_decoder_get_picture_tag(decoder);
frame = schro_decoder_pull(decoder); frame = schro_decoder_pull(decoder);
if (frame) if (frame) {
/* Add relation between schroframe and pts. */
framewithpts = av_malloc(sizeof(LibSchroFrameContext));
if (!framewithpts) {
av_log(avccontext, AV_LOG_ERROR, "Unable to allocate FrameWithPts\n");
return AVERROR(ENOMEM);
}
framewithpts->frame = frame;
framewithpts->pts = AV_RN64(tag->value);
ff_schro_queue_push_back(&p_schro_params->dec_frame_queue, ff_schro_queue_push_back(&p_schro_params->dec_frame_queue,
frame); framewithpts);
}
break; break;
case SCHRO_DECODER_EOS: case SCHRO_DECODER_EOS:
go = 0; go = 0;
...@@ -284,30 +304,46 @@ static int libschroedinger_decode_frame(AVCodecContext *avccontext, ...@@ -284,30 +304,46 @@ static int libschroedinger_decode_frame(AVCodecContext *avccontext,
} while (outer); } while (outer);
/* Grab next frame to be returned from the top of the queue. */ /* Grab next frame to be returned from the top of the queue. */
frame = ff_schro_queue_pop(&p_schro_params->dec_frame_queue); framewithpts = ff_schro_queue_pop(&p_schro_params->dec_frame_queue);
if (framewithpts && framewithpts->frame) {
if (p_schro_params->dec_frame.data[0])
avccontext->release_buffer(avccontext, &p_schro_params->dec_frame);
if (avccontext->get_buffer(avccontext, &p_schro_params->dec_frame) < 0) {
av_log(avccontext, AV_LOG_ERROR, "Unable to allocate buffer\n");
return AVERROR(ENOMEM);
}
if (frame) { memcpy(p_schro_params->dec_frame.data[0],
memcpy(p_schro_params->dec_pic.data[0], framewithpts->frame->components[0].data,
frame->components[0].data, framewithpts->frame->components[0].length);
frame->components[0].length);
memcpy(p_schro_params->dec_pic.data[1], memcpy(p_schro_params->dec_frame.data[1],
frame->components[1].data, framewithpts->frame->components[1].data,
frame->components[1].length); framewithpts->frame->components[1].length);
memcpy(p_schro_params->dec_pic.data[2], memcpy(p_schro_params->dec_frame.data[2],
frame->components[2].data, framewithpts->frame->components[2].data,
frame->components[2].length); framewithpts->frame->components[2].length);
/* Fill picture with current buffer data from Schroedinger. */ /* Fill frame with current buffer data from Schroedinger. */
avpicture_fill(picture, p_schro_params->dec_pic.data[0], p_schro_params->dec_frame.format = -1; /* Unknown -1 */
avccontext->pix_fmt, p_schro_params->dec_frame.width = framewithpts->frame->width;
avccontext->width, avccontext->height); p_schro_params->dec_frame.height = framewithpts->frame->height;
p_schro_params->dec_frame.pkt_pts = framewithpts->pts;
p_schro_params->dec_frame.linesize[0] = framewithpts->frame->components[0].stride;
p_schro_params->dec_frame.linesize[1] = framewithpts->frame->components[1].stride;
p_schro_params->dec_frame.linesize[2] = framewithpts->frame->components[2].stride;
*data_size = sizeof(AVPicture); *(AVFrame*)data = p_schro_params->dec_frame;
*data_size = sizeof(AVFrame);
/* Now free the frame resources. */ /* Now free the frame resources. */
libschroedinger_decode_frame_free(frame); libschroedinger_decode_frame_free(framewithpts->frame);
av_free(framewithpts);
} else {
data = NULL;
*data_size = 0;
} }
return buf_size; return buf_size;
} }
...@@ -320,7 +356,8 @@ static av_cold int libschroedinger_decode_close(AVCodecContext *avccontext) ...@@ -320,7 +356,8 @@ static av_cold int libschroedinger_decode_close(AVCodecContext *avccontext)
schro_decoder_free(p_schro_params->decoder); schro_decoder_free(p_schro_params->decoder);
av_freep(&p_schro_params->format); av_freep(&p_schro_params->format);
avpicture_free(&p_schro_params->dec_pic); if (p_schro_params->dec_frame.data[0])
avccontext->release_buffer(avccontext, &p_schro_params->dec_frame);
/* Free data in the output frame queue. */ /* Free data in the output frame queue. */
ff_schro_queue_free(&p_schro_params->dec_frame_queue, ff_schro_queue_free(&p_schro_params->dec_frame_queue,
......
...@@ -33,7 +33,7 @@ ...@@ -33,7 +33,7 @@
#include "libavutil/cpu.h" #include "libavutil/cpu.h"
#include "libavutil/intreadwrite.h" #include "libavutil/intreadwrite.h"
#include "libavutil/mathematics.h" #include "libavutil/mathematics.h"
#include "libxvid_internal.h" #include "libxvid.h"
#include "mpegvideo.h" #include "mpegvideo.h"
/** /**
...@@ -82,7 +82,6 @@ struct xvid_ff_pass1 { ...@@ -82,7 +82,6 @@ struct xvid_ff_pass1 {
* rate-control plugin. * rate-control plugin.
*/ */
/** /**
* Initialize the two-pass plugin and context. * Initialize the two-pass plugin and context.
* *
......
...@@ -18,8 +18,8 @@ ...@@ -18,8 +18,8 @@
* Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
*/ */
#ifndef AVCODEC_LIBXVID_INTERNAL_H #ifndef AVCODEC_LIBXVID_H
#define AVCODEC_LIBXVID_INTERNAL_H #define AVCODEC_LIBXVID_H
/** /**
* @file * @file
...@@ -29,4 +29,4 @@ ...@@ -29,4 +29,4 @@
int ff_tempfile(const char *prefix, char **filename); int ff_tempfile(const char *prefix, char **filename);
#endif /* AVCODEC_LIBXVID_INTERNAL_H */ #endif /* AVCODEC_LIBXVID_H */
...@@ -20,11 +20,12 @@ ...@@ -20,11 +20,12 @@
* Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
*/ */
#include "config.h"
#include <xvid.h> #include <xvid.h>
#include <unistd.h> #include <unistd.h>
#include "libavutil/file.h" #include "libavutil/file.h"
#include "avcodec.h" #include "avcodec.h"
#include "libxvid_internal.h" #include "libxvid.h"
//#include "dsputil.h" //#include "dsputil.h"
#include "mpegvideo.h" #include "mpegvideo.h"
......
...@@ -22,6 +22,12 @@ ...@@ -22,6 +22,12 @@
#ifndef AVCODEC_OPTIONS_TABLE #ifndef AVCODEC_OPTIONS_TABLE
#define AVCODEC_OPTIONS_TABLE #define AVCODEC_OPTIONS_TABLE
#include <float.h>
#include <limits.h>
#include "libavutil/opt.h"
#include "avcodec.h"
#define OFFSET(x) offsetof(AVCodecContext,x) #define OFFSET(x) offsetof(AVCodecContext,x)
#define DEFAULT 0 //should be NAN but it does not work as it is not a constant in glibc as required by ANSI/ISO C #define DEFAULT 0 //should be NAN but it does not work as it is not a constant in glibc as required by ANSI/ISO C
//these names are too long to be readable //these names are too long to be readable
......
...@@ -1001,11 +1001,59 @@ int ff_alloc_packet(AVPacket *avpkt, int size) ...@@ -1001,11 +1001,59 @@ int ff_alloc_packet(AVPacket *avpkt, int size)
return ff_alloc_packet2(NULL, avpkt, size); return ff_alloc_packet2(NULL, avpkt, size);
} }
/**
* Pad last frame with silence.
*/
static int pad_last_frame(AVCodecContext *s, AVFrame **dst, const AVFrame *src)
{
AVFrame *frame = NULL;
uint8_t *buf = NULL;
int ret;
if (!(frame = avcodec_alloc_frame()))
return AVERROR(ENOMEM);
*frame = *src;
if ((ret = av_samples_get_buffer_size(&frame->linesize[0], s->channels,
s->frame_size, s->sample_fmt, 0)) < 0)
goto fail;
if (!(buf = av_malloc(ret))) {
ret = AVERROR(ENOMEM);
goto fail;
}
frame->nb_samples = s->frame_size;
if ((ret = avcodec_fill_audio_frame(frame, s->channels, s->sample_fmt,
buf, ret, 0)) < 0)
goto fail;
if ((ret = av_samples_copy(frame->extended_data, src->extended_data, 0, 0,
src->nb_samples, s->channels, s->sample_fmt)) < 0)
goto fail;
if ((ret = av_samples_set_silence(frame->extended_data, src->nb_samples,
frame->nb_samples - src->nb_samples,
s->channels, s->sample_fmt)) < 0)
goto fail;
*dst = frame;
return 0;
fail:
if (frame->extended_data != frame->data)
av_freep(&frame->extended_data);
av_freep(&buf);
av_freep(&frame);
return ret;
}
int attribute_align_arg avcodec_encode_audio2(AVCodecContext *avctx, int attribute_align_arg avcodec_encode_audio2(AVCodecContext *avctx,
AVPacket *avpkt, AVPacket *avpkt,
const AVFrame *frame, const AVFrame *frame,
int *got_packet_ptr) int *got_packet_ptr)
{ {
AVFrame tmp;
AVFrame *padded_frame = NULL;
int ret; int ret;
AVPacket user_pkt = *avpkt; AVPacket user_pkt = *avpkt;
int needs_realloc = !user_pkt.data; int needs_realloc = !user_pkt.data;
...@@ -1018,12 +1066,38 @@ int attribute_align_arg avcodec_encode_audio2(AVCodecContext *avctx, ...@@ -1018,12 +1066,38 @@ int attribute_align_arg avcodec_encode_audio2(AVCodecContext *avctx,
return 0; return 0;
} }
/* ensure that extended_data is properly set */
if (frame && !frame->extended_data) {
if (av_sample_fmt_is_planar(avctx->sample_fmt) &&
avctx->channels > AV_NUM_DATA_POINTERS) {
av_log(avctx, AV_LOG_ERROR, "Encoding to a planar sample format, "
"with more than %d channels, but extended_data is not set.\n",
AV_NUM_DATA_POINTERS);
return AVERROR(EINVAL);
}
av_log(avctx, AV_LOG_WARNING, "extended_data is not set.\n");
tmp = *frame;
tmp.extended_data = tmp.data;
frame = &tmp;
}
/* check for valid frame size */ /* check for valid frame size */
if (frame) { if (frame) {
if (avctx->codec->capabilities & CODEC_CAP_SMALL_LAST_FRAME) { if (avctx->codec->capabilities & CODEC_CAP_SMALL_LAST_FRAME) {
if (frame->nb_samples > avctx->frame_size) if (frame->nb_samples > avctx->frame_size)
return AVERROR(EINVAL); return AVERROR(EINVAL);
} else if (!(avctx->codec->capabilities & CODEC_CAP_VARIABLE_FRAME_SIZE)) { } else if (!(avctx->codec->capabilities & CODEC_CAP_VARIABLE_FRAME_SIZE)) {
if (frame->nb_samples < avctx->frame_size &&
!avctx->internal->last_audio_frame) {
ret = pad_last_frame(avctx, &padded_frame, frame);
if (ret < 0)
return ret;
frame = padded_frame;
avctx->internal->last_audio_frame = 1;
}
if (frame->nb_samples != avctx->frame_size) if (frame->nb_samples != avctx->frame_size)
return AVERROR(EINVAL); return AVERROR(EINVAL);
} }
...@@ -1084,6 +1158,13 @@ int attribute_align_arg avcodec_encode_audio2(AVCodecContext *avctx, ...@@ -1084,6 +1158,13 @@ int attribute_align_arg avcodec_encode_audio2(AVCodecContext *avctx,
here to simplify things */ here to simplify things */
avpkt->flags |= AV_PKT_FLAG_KEY; avpkt->flags |= AV_PKT_FLAG_KEY;
if (padded_frame) {
av_freep(&padded_frame->data[0]);
if (padded_frame->extended_data != padded_frame->data)
av_freep(&padded_frame->extended_data);
av_freep(&padded_frame);
}
return ret; return ret;
} }
......
...@@ -28,7 +28,7 @@ ...@@ -28,7 +28,7 @@
#define LIBAVCODEC_VERSION_MAJOR 54 #define LIBAVCODEC_VERSION_MAJOR 54
#define LIBAVCODEC_VERSION_MINOR 21 #define LIBAVCODEC_VERSION_MINOR 21
#define LIBAVCODEC_VERSION_MICRO 100 #define LIBAVCODEC_VERSION_MICRO 101
#define LIBAVCODEC_VERSION_INT AV_VERSION_INT(LIBAVCODEC_VERSION_MAJOR, \ #define LIBAVCODEC_VERSION_INT AV_VERSION_INT(LIBAVCODEC_VERSION_MAJOR, \
LIBAVCODEC_VERSION_MINOR, \ LIBAVCODEC_VERSION_MINOR, \
......
...@@ -23,6 +23,7 @@ HEADERS = asrc_abuffer.h \ ...@@ -23,6 +23,7 @@ HEADERS = asrc_abuffer.h \
OBJS = allfilters.o \ OBJS = allfilters.o \
avfilter.o \ avfilter.o \
avfiltergraph.o \ avfiltergraph.o \
buffersink.o \
defaults.o \ defaults.o \
drawutils.o \ drawutils.o \
formats.o \ formats.o \
......
...@@ -128,6 +128,10 @@ void avfilter_register_all(void) ...@@ -128,6 +128,10 @@ void avfilter_register_all(void)
extern AVFilter avfilter_vsrc_buffer; extern AVFilter avfilter_vsrc_buffer;
avfilter_register(&avfilter_vsrc_buffer); avfilter_register(&avfilter_vsrc_buffer);
} }
{
extern AVFilter avfilter_vsink_buffer;
avfilter_register(&avfilter_vsink_buffer);
}
{ {
extern AVFilter avfilter_vf_scale; extern AVFilter avfilter_vf_scale;
avfilter_register(&avfilter_vf_scale); avfilter_register(&avfilter_vf_scale);
......
...@@ -51,6 +51,50 @@ int avfilter_copy_frame_props(AVFilterBufferRef *dst, const AVFrame *src) ...@@ -51,6 +51,50 @@ int avfilter_copy_frame_props(AVFilterBufferRef *dst, const AVFrame *src)
return 0; return 0;
} }
int avfilter_copy_buf_props(AVFrame *dst, const AVFilterBufferRef *src)
{
int planes, nb_channels;
memcpy(dst->data, src->data, sizeof(dst->data));
memcpy(dst->linesize, src->linesize, sizeof(dst->linesize));
dst->pts = src->pts;
dst->format = src->format;
switch (src->type) {
case AVMEDIA_TYPE_VIDEO:
dst->width = src->video->w;
dst->height = src->video->h;
dst->sample_aspect_ratio = src->video->sample_aspect_ratio;
dst->interlaced_frame = src->video->interlaced;
dst->top_field_first = src->video->top_field_first;
dst->key_frame = src->video->key_frame;
dst->pict_type = src->video->pict_type;
break;
case AVMEDIA_TYPE_AUDIO:
nb_channels = av_get_channel_layout_nb_channels(src->audio->channel_layout);
planes = av_sample_fmt_is_planar(src->format) ? nb_channels : 1;
if (planes > FF_ARRAY_ELEMS(dst->data)) {
dst->extended_data = av_mallocz(planes * sizeof(*dst->extended_data));
if (!dst->extended_data)
return AVERROR(ENOMEM);
memcpy(dst->extended_data, src->extended_data,
planes * sizeof(dst->extended_data));
} else
dst->extended_data = dst->data;
dst->sample_rate = src->audio->sample_rate;
dst->channel_layout = src->audio->channel_layout;
dst->nb_samples = src->audio->nb_samples;
break;
default:
return AVERROR(EINVAL);
}
return 0;
}
AVFilterBufferRef *avfilter_get_video_buffer_ref_from_frame(const AVFrame *frame, AVFilterBufferRef *avfilter_get_video_buffer_ref_from_frame(const AVFrame *frame,
int perms) int perms)
{ {
......
...@@ -35,9 +35,19 @@ ...@@ -35,9 +35,19 @@
/** /**
* Copy the frame properties of src to dst, without copying the actual * Copy the frame properties of src to dst, without copying the actual
* image data. * image data.
*
* @return 0 on success, a negative number on error.
*/ */
int avfilter_copy_frame_props(AVFilterBufferRef *dst, const AVFrame *src); int avfilter_copy_frame_props(AVFilterBufferRef *dst, const AVFrame *src);
/**
* Copy the frame properties and data pointers of src to dst, without copying
* the actual data.
*
* @return 0 on success, a negative number on error.
*/
int avfilter_copy_buf_props(AVFrame *dst, const AVFilterBufferRef *src);
/** /**
* Create and return a picref reference from the data and properties * Create and return a picref reference from the data and properties
* contained in frame. * contained in frame.
......
...@@ -68,6 +68,7 @@ AVFilterBufferRef *avfilter_ref_buffer(AVFilterBufferRef *ref, int pmask) ...@@ -68,6 +68,7 @@ AVFilterBufferRef *avfilter_ref_buffer(AVFilterBufferRef *ref, int pmask)
return NULL; return NULL;
} }
*ret->video = *ref->video; *ret->video = *ref->video;
ret->extended_data = ret->data;
} else if (ref->type == AVMEDIA_TYPE_AUDIO) { } else if (ref->type == AVMEDIA_TYPE_AUDIO) {
ret->audio = av_malloc(sizeof(AVFilterBufferRefAudioProps)); ret->audio = av_malloc(sizeof(AVFilterBufferRefAudioProps));
if (!ret->audio) { if (!ret->audio) {
...@@ -75,6 +76,19 @@ AVFilterBufferRef *avfilter_ref_buffer(AVFilterBufferRef *ref, int pmask) ...@@ -75,6 +76,19 @@ AVFilterBufferRef *avfilter_ref_buffer(AVFilterBufferRef *ref, int pmask)
return NULL; return NULL;
} }
*ret->audio = *ref->audio; *ret->audio = *ref->audio;
if (ref->extended_data != ref->data) {
int nb_channels = av_get_channel_layout_nb_channels(ref->audio->channel_layout);
if (!(ret->extended_data = av_malloc(sizeof(*ret->extended_data) *
nb_channels))) {
av_freep(&ret->audio);
av_freep(&ret);
return NULL;
}
memcpy(ret->extended_data, ref->extended_data,
sizeof(*ret->extended_data) * nb_channels);
} else
ret->extended_data = ret->data;
} }
ret->perms &= pmask; ret->perms &= pmask;
ret->buf->refcount ++; ret->buf->refcount ++;
...@@ -155,6 +169,8 @@ void avfilter_unref_buffer(AVFilterBufferRef *ref) ...@@ -155,6 +169,8 @@ void avfilter_unref_buffer(AVFilterBufferRef *ref)
} }
ref->buf->free(ref->buf); ref->buf->free(ref->buf);
} }
if (ref->extended_data != ref->data)
av_freep(&ref->extended_data);
av_freep(&ref->video); av_freep(&ref->video);
av_freep(&ref->audio); av_freep(&ref->audio);
av_free(ref); av_free(ref);
...@@ -472,6 +488,9 @@ avfilter_get_video_buffer_ref_from_arrays(uint8_t * const data[4], const int lin ...@@ -472,6 +488,9 @@ avfilter_get_video_buffer_ref_from_arrays(uint8_t * const data[4], const int lin
memcpy(picref->data, pic->data, sizeof(picref->data)); memcpy(picref->data, pic->data, sizeof(picref->data));
memcpy(picref->linesize, pic->linesize, sizeof(picref->linesize)); memcpy(picref->linesize, pic->linesize, sizeof(picref->linesize));
pic-> extended_data = pic->data;
picref->extended_data = picref->data;
return picref; return picref;
fail: fail:
...@@ -541,6 +560,74 @@ fail: ...@@ -541,6 +560,74 @@ fail:
return NULL; return NULL;
} }
AVFilterBufferRef *avfilter_get_audio_buffer_ref_from_arrays_alt(uint8_t **data,
int linesize, int perms,
int nb_samples,
enum AVSampleFormat sample_fmt,
uint64_t channel_layout)
{
int planes;
AVFilterBuffer *samples = av_mallocz(sizeof(*samples));
AVFilterBufferRef *samplesref = av_mallocz(sizeof(*samplesref));
if (!samples || !samplesref)
goto fail;
samplesref->buf = samples;
samplesref->buf->free = ff_avfilter_default_free_buffer;
if (!(samplesref->audio = av_mallocz(sizeof(*samplesref->audio))))
goto fail;
samplesref->audio->nb_samples = nb_samples;
samplesref->audio->channel_layout = channel_layout;
samplesref->audio->planar = av_sample_fmt_is_planar(sample_fmt);
planes = samplesref->audio->planar ? av_get_channel_layout_nb_channels(channel_layout) : 1;
/* make sure the buffer gets read permission or it's useless for output */
samplesref->perms = perms | AV_PERM_READ;
samples->refcount = 1;
samplesref->type = AVMEDIA_TYPE_AUDIO;
samplesref->format = sample_fmt;
memcpy(samples->data, data,
FFMIN(FF_ARRAY_ELEMS(samples->data), planes)*sizeof(samples->data[0]));
memcpy(samplesref->data, samples->data, sizeof(samples->data));
samples->linesize[0] = samplesref->linesize[0] = linesize;
if (planes > FF_ARRAY_ELEMS(samples->data)) {
samples-> extended_data = av_mallocz(sizeof(*samples->extended_data) *
planes);
samplesref->extended_data = av_mallocz(sizeof(*samplesref->extended_data) *
planes);
if (!samples->extended_data || !samplesref->extended_data)
goto fail;
memcpy(samples-> extended_data, data, sizeof(*data)*planes);
memcpy(samplesref->extended_data, data, sizeof(*data)*planes);
} else {
samples->extended_data = samples->data;
samplesref->extended_data = samplesref->data;
}
return samplesref;
fail:
if (samples && samples->extended_data != samples->data)
av_freep(&samples->extended_data);
if (samplesref) {
av_freep(&samplesref->audio);
if (samplesref->extended_data != samplesref->data)
av_freep(&samplesref->extended_data);
}
av_freep(&samplesref);
av_freep(&samples);
return NULL;
}
int avfilter_request_frame(AVFilterLink *link) int avfilter_request_frame(AVFilterLink *link)
{ {
FF_DPRINTF_START(NULL, request_frame); ff_dlog_link(NULL, link, 1); FF_DPRINTF_START(NULL, request_frame); ff_dlog_link(NULL, link, 1);
......
...@@ -84,6 +84,22 @@ typedef struct AVFilterBuffer { ...@@ -84,6 +84,22 @@ typedef struct AVFilterBuffer {
int format; ///< media format int format; ///< media format
int w, h; ///< width and height of the allocated buffer int w, h; ///< width and height of the allocated buffer
/**
* pointers to the data planes/channels.
*
* For video, this should simply point to data[].
*
* For planar audio, each channel has a separate data pointer, and
* linesize[0] contains the size of each channel buffer.
* For packed audio, there is just one data pointer, and linesize[0]
* contains the total size of the buffer for all channels.
*
* Note: Both data and extended_data will always be set, but for planar
* audio with more channels that can fit in data, extended_data must be used
* in order to access all channels.
*/
uint8_t **extended_data;
} AVFilterBuffer; } AVFilterBuffer;
#define AV_PERM_READ 0x01 ///< can read from the buffer #define AV_PERM_READ 0x01 ///< can read from the buffer
...@@ -150,6 +166,22 @@ typedef struct AVFilterBufferRef { ...@@ -150,6 +166,22 @@ typedef struct AVFilterBufferRef {
enum AVMediaType type; ///< media type of buffer data enum AVMediaType type; ///< media type of buffer data
AVFilterBufferRefVideoProps *video; ///< video buffer specific properties AVFilterBufferRefVideoProps *video; ///< video buffer specific properties
AVFilterBufferRefAudioProps *audio; ///< audio buffer specific properties AVFilterBufferRefAudioProps *audio; ///< audio buffer specific properties
/**
* pointers to the data planes/channels.
*
* For video, this should simply point to data[].
*
* For planar audio, each channel has a separate data pointer, and
* linesize[0] contains the size of each channel buffer.
* For packed audio, there is just one data pointer, and linesize[0]
* contains the total size of the buffer for all channels.
*
* Note: Both data and extended_data will always be set, but for planar
* audio with more channels that can fit in data, extended_data must be used
* in order to access all channels.
*/
uint8_t **extended_data;
} AVFilterBufferRef; } AVFilterBufferRef;
/** /**
...@@ -783,10 +815,31 @@ AVFilterBufferRef *avfilter_get_audio_buffer(AVFilterLink *link, int perms, ...@@ -783,10 +815,31 @@ AVFilterBufferRef *avfilter_get_audio_buffer(AVFilterLink *link, int perms,
* @param channel_layout the channel layout of the buffer * @param channel_layout the channel layout of the buffer
* @param planar audio data layout - planar or packed * @param planar audio data layout - planar or packed
*/ */
AVFilterBufferRef * AVFilterBufferRef *avfilter_get_audio_buffer_ref_from_arrays(uint8_t *data[8],
avfilter_get_audio_buffer_ref_from_arrays(uint8_t *data[8], int linesize[8], int perms, int linesize[8],
int nb_samples, enum AVSampleFormat sample_fmt, int perms,
uint64_t channel_layout, int planar); int nb_samples,
enum AVSampleFormat sample_fmt,
uint64_t channel_layout,
int planar);
/**
* Create an audio buffer reference wrapped around an already
* allocated samples buffer.
*
* @param data pointers to the samples plane buffers
* @param linesize linesize for the samples plane buffers
* @param perms the required access permissions
* @param nb_samples number of samples per channel
* @param sample_fmt the format of each sample in the buffer to allocate
* @param channel_layout the channel layout of the buffer
*/
AVFilterBufferRef *avfilter_get_audio_buffer_ref_from_arrays_alt(uint8_t **data,
int linesize,
int perms,
int nb_samples,
enum AVSampleFormat sample_fmt,
uint64_t channel_layout);
/** /**
* Request an input frame from the filter at the other end of the link. * Request an input frame from the filter at the other end of the link.
* *
......
/*
* Copyright (c) 2011 Stefano Sabatini
*
* 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
*/
/**
* @file
* buffer sink
*/
#include "libavutil/fifo.h"
#include "avfilter.h"
#include "buffersink.h"
typedef struct {
AVFifoBuffer *fifo; ///< FIFO buffer of video frame references
} BufferSinkContext;
#define FIFO_INIT_SIZE 8
static av_cold void uninit(AVFilterContext *ctx)
{
BufferSinkContext *sink = ctx->priv;
while (sink->fifo && av_fifo_size(sink->fifo)) {
AVFilterBufferRef *buf;
av_fifo_generic_read(sink->fifo, &buf, sizeof(buf), NULL);
avfilter_unref_buffer(buf);
}
av_fifo_free(sink->fifo);
}
static av_cold int init(AVFilterContext *ctx, const char *args, void *opaque)
{
BufferSinkContext *sink = ctx->priv;
if (!(sink->fifo = av_fifo_alloc(FIFO_INIT_SIZE*sizeof(AVFilterBufferRef*)))) {
av_log(ctx, AV_LOG_ERROR, "Failed to allocate fifo\n");
return AVERROR(ENOMEM);
}
return 0;
}
static void end_frame(AVFilterLink *link)
{
AVFilterContext *ctx = link->dst;
BufferSinkContext *sink = ctx->priv;
if (av_fifo_space(sink->fifo) < sizeof(AVFilterBufferRef *) &&
(av_fifo_realloc2(sink->fifo, av_fifo_size(sink->fifo) * 2) < 0)) {
av_log(ctx, AV_LOG_ERROR, "Error reallocating the FIFO.\n");
return;
}
av_fifo_generic_write(sink->fifo, &link->cur_buf, sizeof(link->cur_buf), NULL);
link->cur_buf = NULL;
}
int av_buffersink_read(AVFilterContext *ctx, AVFilterBufferRef **buf)
{
BufferSinkContext *sink = ctx->priv;
AVFilterLink *link = ctx->inputs[0];
int ret;
if (!buf) {
if (av_fifo_size(sink->fifo))
return av_fifo_size(sink->fifo)/sizeof(*buf);
else
return avfilter_poll_frame(ctx->inputs[0]);
}
if (!av_fifo_size(sink->fifo) &&
(ret = avfilter_request_frame(link)) < 0)
return ret;
if (!av_fifo_size(sink->fifo))
return AVERROR(EINVAL);
av_fifo_generic_read(sink->fifo, buf, sizeof(*buf), NULL);
return 0;
}
AVFilter avfilter_vsink_buffer = {
.name = "buffersink_old",
.description = NULL_IF_CONFIG_SMALL("Buffer video frames, and make them available to the end of the filter graph."),
.priv_size = sizeof(BufferSinkContext),
.init = init,
.uninit = uninit,
.inputs = (AVFilterPad[]) {{ .name = "default",
.type = AVMEDIA_TYPE_VIDEO,
.end_frame = end_frame,
.min_perms = AV_PERM_READ, },
{ .name = NULL }},
.outputs = (AVFilterPad[]) {{ .name = NULL }},
};
...@@ -98,4 +98,18 @@ int av_vsink_buffer_get_video_buffer_ref(AVFilterContext *buffer_sink, ...@@ -98,4 +98,18 @@ int av_vsink_buffer_get_video_buffer_ref(AVFilterContext *buffer_sink,
AVFilterBufferRef **picref, int flags); AVFilterBufferRef **picref, int flags);
#endif #endif
/**
* Get a buffer with filtered data from sink and put it in buf.
*
* @param sink pointer to a context of a buffersink AVFilter.
* @param buf pointer to the buffer will be written here if buf is non-NULL. buf
* must be freed by the caller using avfilter_unref_buffer().
* Buf may also be NULL to query whether a buffer is ready to be
* output.
*
* @return >= 0 in case of success, a negative AVERROR code in case of
* failure.
*/
int av_buffersink_read(AVFilterContext *sink, AVFilterBufferRef **buf);
#endif /* AVFILTER_BUFFERSINK_H */ #endif /* AVFILTER_BUFFERSINK_H */
...@@ -28,6 +28,8 @@ ...@@ -28,6 +28,8 @@
void ff_avfilter_default_free_buffer(AVFilterBuffer *ptr) void ff_avfilter_default_free_buffer(AVFilterBuffer *ptr)
{ {
if (ptr->extended_data != ptr->data)
av_freep(&ptr->extended_data);
av_free(ptr->data[0]); av_free(ptr->data[0]);
av_free(ptr); av_free(ptr);
} }
......
...@@ -374,6 +374,7 @@ OBJS-$(CONFIG_MD5_PROTOCOL) += md5proto.o ...@@ -374,6 +374,7 @@ OBJS-$(CONFIG_MD5_PROTOCOL) += md5proto.o
OBJS-$(CONFIG_PIPE_PROTOCOL) += file.o OBJS-$(CONFIG_PIPE_PROTOCOL) += file.o
OBJS-$(CONFIG_RTMP_PROTOCOL) += rtmpproto.o rtmppkt.o OBJS-$(CONFIG_RTMP_PROTOCOL) += rtmpproto.o rtmppkt.o
OBJS-$(CONFIG_RTP_PROTOCOL) += rtpproto.o OBJS-$(CONFIG_RTP_PROTOCOL) += rtpproto.o
OBJS-$(CONFIG_SCTP_PROTOCOL) += sctp.o
OBJS-$(CONFIG_TCP_PROTOCOL) += tcp.o OBJS-$(CONFIG_TCP_PROTOCOL) += tcp.o
OBJS-$(CONFIG_TLS_PROTOCOL) += tls.o OBJS-$(CONFIG_TLS_PROTOCOL) += tls.o
OBJS-$(CONFIG_UDP_PROTOCOL) += udp.o OBJS-$(CONFIG_UDP_PROTOCOL) += udp.o
......
...@@ -278,6 +278,7 @@ void av_register_all(void) ...@@ -278,6 +278,7 @@ void av_register_all(void)
REGISTER_PROTOCOL (PIPE, pipe); REGISTER_PROTOCOL (PIPE, pipe);
REGISTER_PROTOCOL (RTMP, rtmp); REGISTER_PROTOCOL (RTMP, rtmp);
REGISTER_PROTOCOL (RTP, rtp); REGISTER_PROTOCOL (RTP, rtp);
REGISTER_PROTOCOL (SCTP, sctp);
REGISTER_PROTOCOL (TCP, tcp); REGISTER_PROTOCOL (TCP, tcp);
REGISTER_PROTOCOL (TLS, tls); REGISTER_PROTOCOL (TLS, tls);
REGISTER_PROTOCOL (UDP, udp); REGISTER_PROTOCOL (UDP, udp);
......
...@@ -21,6 +21,11 @@ ...@@ -21,6 +21,11 @@
#ifndef AVFORMAT_OPTIONS_TABLE #ifndef AVFORMAT_OPTIONS_TABLE
#define AVFORMAT_OPTIONS_TABLE #define AVFORMAT_OPTIONS_TABLE
#include <limits.h>
#include "libavutil/opt.h"
#include "avformat.h"
#define OFFSET(x) offsetof(AVFormatContext,x) #define OFFSET(x) offsetof(AVFormatContext,x)
#define DEFAULT 0 //should be NAN but it does not work as it is not a constant in glibc as required by ANSI/ISO C #define DEFAULT 0 //should be NAN but it does not work as it is not a constant in glibc as required by ANSI/ISO C
//these names are too long to be readable //these names are too long to be readable
......
...@@ -870,6 +870,9 @@ void ff_rtsp_parse_line(RTSPMessageHeader *reply, const char *buf, ...@@ -870,6 +870,9 @@ void ff_rtsp_parse_line(RTSPMessageHeader *reply, const char *buf,
} else if (av_stristart(p, "x-Accept-Dynamic-Rate:", &p) && rt) { } else if (av_stristart(p, "x-Accept-Dynamic-Rate:", &p) && rt) {
p += strspn(p, SPACE_CHARS); p += strspn(p, SPACE_CHARS);
rt->accept_dynamic_rate = atoi(p); rt->accept_dynamic_rate = atoi(p);
} else if (av_stristart(p, "Content-Type:", &p)) {
p += strspn(p, SPACE_CHARS);
av_strlcpy(reply->content_type, p, sizeof(reply->content_type));
} }
} }
......
...@@ -171,6 +171,11 @@ typedef struct RTSPMessageHeader { ...@@ -171,6 +171,11 @@ typedef struct RTSPMessageHeader {
* returned * returned
*/ */
char reason[256]; char reason[256];
/**
* Content type header
*/
char content_type[64];
} RTSPMessageHeader; } RTSPMessageHeader;
/** /**
......
/*
* SCTP protocol
* Copyright (c) 2012 Luca Barbato
*
* This file is part of Libav.
*
* Libav 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.
*
* Libav 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 Libav; if not, write to the Free Software
* Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
*/
/**
* @file
*
* sctp url_protocol
*
* url syntax: sctp://host:port[?option=val...]
* option: 'listen' : listen for an incoming connection
* 'max_streams=n' : set the maximum number of streams
* 'reuse=1' : enable reusing the socket [TBD]
*
* by setting the maximum number of streams the protocol will use the
* first two bytes of the incoming/outgoing buffer to store the
* stream number of the packet being read/written.
* @see sctp_read
* @see sctp_write
*/
#include <netinet/in.h>
#include <netinet/sctp.h>
#include <sys/time.h>
#include <unistd.h>
#include "config.h"
#if HAVE_POLL_H
#include <poll.h>
#endif
#include "libavutil/intreadwrite.h"
#include "libavutil/parseutils.h"
#include "avformat.h"
#include "internal.h"
#include "network.h"
#include "os_support.h"
#include "url.h"
/*
* The sctp_recvmsg and sctp_sendmsg functions are part of the user
* library that offers support
* for the SCTP kernel Implementation. The main purpose of this
* code is to provide the SCTP Socket API mappings for user
* application to interface with the SCTP in kernel.
*
* This implementation is based on the Socket API Extensions for SCTP
* defined in <draft-ietf-tsvwg-sctpsocket-10.txt>
*
* Copyright (c) 2003 International Business Machines, Corp.
*
* Written or modified by:
* Ryan Layer <rmlayer@us.ibm.com>
*/
static int ff_sctp_recvmsg(int s, void *msg, size_t len, struct sockaddr *from,
socklen_t *fromlen, struct sctp_sndrcvinfo *sinfo,
int *msg_flags)
{
int recvb;
struct iovec iov;
char incmsg[CMSG_SPACE(sizeof(struct sctp_sndrcvinfo))];
struct msghdr inmsg = { 0 };
struct cmsghdr *cmsg = NULL;
iov.iov_base = msg;
iov.iov_len = len;
inmsg.msg_name = from;
inmsg.msg_namelen = fromlen ? *fromlen : 0;
inmsg.msg_iov = &iov;
inmsg.msg_iovlen = 1;
inmsg.msg_control = incmsg;
inmsg.msg_controllen = sizeof(incmsg);
if ((recvb = recvmsg(s, &inmsg, msg_flags ? *msg_flags : 0)) < 0)
return recvb;
if (fromlen)
*fromlen = inmsg.msg_namelen;
if (msg_flags)
*msg_flags = inmsg.msg_flags;
for (cmsg = CMSG_FIRSTHDR(&inmsg); cmsg != NULL;
cmsg = CMSG_NXTHDR(&inmsg, cmsg)) {
if ((IPPROTO_SCTP == cmsg->cmsg_level) &&
(SCTP_SNDRCV == cmsg->cmsg_type))
break;
}
/* Copy sinfo. */
if (cmsg)
memcpy(sinfo, CMSG_DATA(cmsg), sizeof(struct sctp_sndrcvinfo));
return recvb;
}
static int ff_sctp_send(int s, const void *msg, size_t len,
const struct sctp_sndrcvinfo *sinfo, int flags)
{
struct msghdr outmsg;
struct iovec iov;
outmsg.msg_name = NULL;
outmsg.msg_namelen = 0;
outmsg.msg_iov = &iov;
iov.iov_base = msg;
iov.iov_len = len;
outmsg.msg_iovlen = 1;
outmsg.msg_controllen = 0;
if (sinfo) {
char outcmsg[CMSG_SPACE(sizeof(struct sctp_sndrcvinfo))];
struct cmsghdr *cmsg;
outmsg.msg_control = outcmsg;
outmsg.msg_controllen = sizeof(outcmsg);
outmsg.msg_flags = 0;
cmsg = CMSG_FIRSTHDR(&outmsg);
cmsg->cmsg_level = IPPROTO_SCTP;
cmsg->cmsg_type = SCTP_SNDRCV;
cmsg->cmsg_len = CMSG_LEN(sizeof(struct sctp_sndrcvinfo));
outmsg.msg_controllen = cmsg->cmsg_len;
memcpy(CMSG_DATA(cmsg), sinfo, sizeof(struct sctp_sndrcvinfo));
}
return sendmsg(s, &outmsg, flags);
}
typedef struct SCTPContext {
int fd;
int max_streams;
struct sockaddr_storage dest_addr;
socklen_t dest_addr_len;
} SCTPContext;
static int sctp_open(URLContext *h, const char *uri, int flags)
{
struct addrinfo *ai, *cur_ai;
struct addrinfo hints = { 0 };
struct sctp_event_subscribe event = { 0 };
struct sctp_initmsg initparams = { 0 };
int port;
int fd = -1;
SCTPContext *s = h->priv_data;
const char *p;
char buf[256];
int ret, listen_socket = 0;
char hostname[1024], proto[1024], path[1024];
char portstr[10];
av_url_split(proto, sizeof(proto), NULL, 0, hostname, sizeof(hostname),
&port, path, sizeof(path), uri);
if (strcmp(proto,"sctp") || port <= 0 || port >= 65536)
return AVERROR(EINVAL);
s->max_streams = 0;
p = strchr(uri, '?');
if (p) {
if (av_find_info_tag(buf, sizeof(buf), "listen", p))
listen_socket = 1;
if (av_find_info_tag(buf, sizeof(buf), "max_streams", p))
s->max_streams = strtol(buf, NULL, 10);
}
hints.ai_family = AF_UNSPEC;
hints.ai_socktype = SOCK_STREAM;
snprintf(portstr, sizeof(portstr), "%d", port);
ret = getaddrinfo(hostname, portstr, &hints, &ai);
if (ret) {
av_log(h, AV_LOG_ERROR, "Failed to resolve hostname %s: %s\n",
hostname, gai_strerror(ret));
return AVERROR(EIO);
}
cur_ai = ai;
fd = socket(cur_ai->ai_family, SOCK_STREAM, IPPROTO_SCTP);
if (fd < 0)
goto fail;
s->dest_addr_len = sizeof(s->dest_addr);
if (listen_socket) {
int fd1;
ret = bind(fd, cur_ai->ai_addr, cur_ai->ai_addrlen);
listen(fd, 100);
fd1 = accept(fd, NULL, NULL);
closesocket(fd);
fd = fd1;
} else
ret = connect(fd, cur_ai->ai_addr, cur_ai->ai_addrlen);
ff_socket_nonblock(fd, 1);
event.sctp_data_io_event = 1;
/* TODO: Subscribe to more event types and handle them */
if (setsockopt(fd, IPPROTO_SCTP, SCTP_EVENTS, &event,
sizeof(event)) != 0) {
av_log(h, AV_LOG_ERROR,
"SCTP ERROR: Unable to subscribe to events\n");
goto fail;
}
if (s->max_streams) {
initparams.sinit_max_instreams = s->max_streams;
initparams.sinit_num_ostreams = s->max_streams;
if (setsockopt(fd, SOL_SCTP, SCTP_INITMSG, &initparams,
sizeof(initparams)) < 0)
av_log(h, AV_LOG_ERROR,
"SCTP ERROR: Unable to initialize socket max streams %d\n",
s->max_streams);
}
h->priv_data = s;
h->is_streamed = 1;
s->fd = fd;
freeaddrinfo(ai);
return 0;
fail:
ret = AVERROR(EIO);
freeaddrinfo(ai);
return ret;
}
static int sctp_wait_fd(int fd, int write)
{
int ev = write ? POLLOUT : POLLIN;
struct pollfd p = { .fd = fd, .events = ev, .revents = 0 };
int ret;
ret = poll(&p, 1, 100);
return ret < 0 ? ff_neterrno() : p.revents & ev ? 0 : AVERROR(EAGAIN);
}
static int sctp_read(URLContext *h, uint8_t *buf, int size)
{
SCTPContext *s = h->priv_data;
int ret;
if (!(h->flags & AVIO_FLAG_NONBLOCK)) {
ret = sctp_wait_fd(s->fd, 0);
if (ret < 0)
return ret;
}
if (s->max_streams) {
/*StreamId is introduced as a 2byte code into the stream*/
struct sctp_sndrcvinfo info = { 0 };
ret = ff_sctp_recvmsg(s->fd, buf + 2, size - 2, NULL, 0, &info, 0);
AV_WB16(buf, info.sinfo_stream);
ret = ret < 0 ? ret : ret + 2;
} else
ret = recv(s->fd, buf, size, 0);
return ret < 0 ? ff_neterrno() : ret;
}
static int sctp_write(URLContext *h, const uint8_t *buf, int size)
{
SCTPContext *s = h->priv_data;
int ret;
if (!(h->flags & AVIO_FLAG_NONBLOCK)) {
ret = sctp_wait_fd(s->fd, 1);
if (ret < 0)
return ret;
}
if (s->max_streams) {
/*StreamId is introduced as a 2byte code into the stream*/
struct sctp_sndrcvinfo info = { 0 };
info.sinfo_stream = AV_RB16(buf);
if (info.sinfo_stream > s->max_streams)
abort();
ret = ff_sctp_send(s->fd, buf + 2, size - 2, &info, MSG_EOR);
} else
ret = send(s->fd, buf, size, 0);
return ret < 0 ? ff_neterrno() : ret;
}
static int sctp_close(URLContext *h)
{
SCTPContext *s = h->priv_data;
closesocket(s->fd);
return 0;
}
static int sctp_get_file_handle(URLContext *h)
{
SCTPContext *s = h->priv_data;
return s->fd;
}
URLProtocol ff_sctp_protocol = {
.name = "sctp",
.url_open = sctp_open,
.url_read = sctp_read,
.url_write = sctp_write,
.url_close = sctp_close,
.url_get_file_handle = sctp_get_file_handle,
.priv_data_size = sizeof(SCTPContext),
.flags = URL_PROTOCOL_FLAG_NETWORK,
};
...@@ -274,7 +274,8 @@ int avresample_available(AVAudioResampleContext *avr); ...@@ -274,7 +274,8 @@ int avresample_available(AVAudioResampleContext *avr);
* @see avresample_convert() * @see avresample_convert()
* *
* @param avr audio resample context * @param avr audio resample context
* @param output output data pointers * @param output output data pointers. May be NULL, in which case
* nb_samples of data is discarded from output FIFO.
* @param nb_samples number of samples to read from the FIFO * @param nb_samples number of samples to read from the FIFO
* @return the number of samples written to output * @return the number of samples written to output
*/ */
......
...@@ -375,7 +375,8 @@ int avresample_convert(AVAudioResampleContext *avr, void **output, ...@@ -375,7 +375,8 @@ int avresample_convert(AVAudioResampleContext *avr, void **output,
} }
} }
return handle_buffered_output(avr, &output_buffer, current_buffer); return handle_buffered_output(avr, output ? &output_buffer : NULL,
current_buffer);
} }
int avresample_available(AVAudioResampleContext *avr) int avresample_available(AVAudioResampleContext *avr)
...@@ -385,6 +386,8 @@ int avresample_available(AVAudioResampleContext *avr) ...@@ -385,6 +386,8 @@ int avresample_available(AVAudioResampleContext *avr)
int avresample_read(AVAudioResampleContext *avr, void **output, int nb_samples) int avresample_read(AVAudioResampleContext *avr, void **output, int nb_samples)
{ {
if (!output)
return av_audio_fifo_drain(avr->out_fifo, nb_samples);
return av_audio_fifo_read(avr->out_fifo, output, nb_samples); return av_audio_fifo_read(avr->out_fifo, output, nb_samples);
} }
......
...@@ -21,7 +21,7 @@ ...@@ -21,7 +21,7 @@
#define LIBAVRESAMPLE_VERSION_MAJOR 0 #define LIBAVRESAMPLE_VERSION_MAJOR 0
#define LIBAVRESAMPLE_VERSION_MINOR 0 #define LIBAVRESAMPLE_VERSION_MINOR 0
#define LIBAVRESAMPLE_VERSION_MICRO 1 #define LIBAVRESAMPLE_VERSION_MICRO 2
#define LIBAVRESAMPLE_VERSION_INT AV_VERSION_INT(LIBAVRESAMPLE_VERSION_MAJOR, \ #define LIBAVRESAMPLE_VERSION_INT AV_VERSION_INT(LIBAVRESAMPLE_VERSION_MAJOR, \
LIBAVRESAMPLE_VERSION_MINOR, \ LIBAVRESAMPLE_VERSION_MINOR, \
......
...@@ -24,75 +24,23 @@ ...@@ -24,75 +24,23 @@
#include <stdint.h> #include <stdint.h>
#include "config.h" #include "config.h"
#if HAVE_INLINE_ASM #if ARCH_MIPS64 && HAVE_INLINE_ASM
#define AV_RN32 AV_RN32 #define AV_RN32 AV_RN32
static av_always_inline uint32_t AV_RN32(const void *p) static av_always_inline uint32_t AV_RN32(const void *p)
{ {
struct __attribute__((packed)) u32 { uint32_t v; };
const uint8_t *q = p;
const struct u32 *pl = (const struct u32 *)(q + 3 * !HAVE_BIGENDIAN);
const struct u32 *pr = (const struct u32 *)(q + 3 * HAVE_BIGENDIAN);
uint32_t v; uint32_t v;
__asm__ ("lwl %0, %1 \n\t" __asm__ ("lwl %0, %1 \n\t"
"lwr %0, %2 \n\t" "lwr %0, %2 \n\t"
: "=&r"(v) : "=&r"(v)
: "m"(*(const uint32_t *)((const uint8_t *)p+3*!HAVE_BIGENDIAN)), : "m"(*pl), "m"(*pr));
"m"(*(const uint32_t *)((const uint8_t *)p+3*HAVE_BIGENDIAN)));
return v; return v;
} }
#define AV_WN32 AV_WN32 #endif /* ARCH_MIPS64 && HAVE_INLINE_ASM */
static av_always_inline void AV_WN32(void *p, uint32_t v)
{
__asm__ ("swl %2, %0 \n\t"
"swr %2, %1 \n\t"
: "=m"(*(uint32_t *)((uint8_t *)p+3*!HAVE_BIGENDIAN)),
"=m"(*(uint32_t *)((uint8_t *)p+3*HAVE_BIGENDIAN))
: "r"(v));
}
#if ARCH_MIPS64
#define AV_RN64 AV_RN64
static av_always_inline uint64_t AV_RN64(const void *p)
{
uint64_t v;
__asm__ ("ldl %0, %1 \n\t"
"ldr %0, %2 \n\t"
: "=&r"(v)
: "m"(*(const uint64_t *)((const uint8_t *)p+7*!HAVE_BIGENDIAN)),
"m"(*(const uint64_t *)((const uint8_t *)p+7*HAVE_BIGENDIAN)));
return v;
}
#define AV_WN64 AV_WN64
static av_always_inline void AV_WN64(void *p, uint64_t v)
{
__asm__ ("sdl %2, %0 \n\t"
"sdr %2, %1 \n\t"
: "=m"(*(uint64_t *)((uint8_t *)p+7*!HAVE_BIGENDIAN)),
"=m"(*(uint64_t *)((uint8_t *)p+7*HAVE_BIGENDIAN))
: "r"(v));
}
#else
#define AV_RN64 AV_RN64
static av_always_inline uint64_t AV_RN64(const void *p)
{
union { uint64_t v; uint32_t hl[2]; } v;
v.hl[0] = AV_RN32(p);
v.hl[1] = AV_RN32((const uint8_t *)p + 4);
return v.v;
}
#define AV_WN64 AV_WN64
static av_always_inline void AV_WN64(void *p, uint64_t v)
{
union { uint64_t v; uint32_t hl[2]; } vv = { v };
AV_WN32(p, vv.hl[0]);
AV_WN32((uint8_t *)p + 4, vv.hl[1]);
}
#endif /* ARCH_MIPS64 */
#endif /* HAVE_INLINE_ASM */
#endif /* AVUTIL_MIPS_INTREADWRITE_H */ #endif /* AVUTIL_MIPS_INTREADWRITE_H */
...@@ -194,3 +194,41 @@ int av_samples_alloc(uint8_t **audio_data, int *linesize, int nb_channels, ...@@ -194,3 +194,41 @@ int av_samples_alloc(uint8_t **audio_data, int *linesize, int nb_channels,
} }
return 0; return 0;
} }
int av_samples_copy(uint8_t **dst, uint8_t * const *src, int dst_offset,
int src_offset, int nb_samples, int nb_channels,
enum AVSampleFormat sample_fmt)
{
int planar = av_sample_fmt_is_planar(sample_fmt);
int planes = planar ? nb_channels : 1;
int block_align = av_get_bytes_per_sample(sample_fmt) * (planar ? 1 : nb_channels);
int data_size = nb_samples * block_align;
int i;
dst_offset *= block_align;
src_offset *= block_align;
for (i = 0; i < planes; i++)
memcpy(dst[i] + dst_offset, src[i] + src_offset, data_size);
return 0;
}
int av_samples_set_silence(uint8_t **audio_data, int offset, int nb_samples,
int nb_channels, enum AVSampleFormat sample_fmt)
{
int planar = av_sample_fmt_is_planar(sample_fmt);
int planes = planar ? nb_channels : 1;
int block_align = av_get_bytes_per_sample(sample_fmt) * (planar ? 1 : nb_channels);
int data_size = nb_samples * block_align;
int fill_char = (sample_fmt == AV_SAMPLE_FMT_U8 ||
sample_fmt == AV_SAMPLE_FMT_U8P) ? 0x80 : 0x00;
int i;
offset *= block_align;
for (i = 0; i < planes; i++)
memset(audio_data[i] + offset, fill_char, data_size);
return 0;
}
...@@ -202,4 +202,31 @@ int av_samples_fill_arrays(uint8_t **audio_data, int *linesize, ...@@ -202,4 +202,31 @@ int av_samples_fill_arrays(uint8_t **audio_data, int *linesize,
int av_samples_alloc(uint8_t **audio_data, int *linesize, int nb_channels, int av_samples_alloc(uint8_t **audio_data, int *linesize, int nb_channels,
int nb_samples, enum AVSampleFormat sample_fmt, int align); int nb_samples, enum AVSampleFormat sample_fmt, int align);
/**
* Copy samples from src to dst.
*
* @param dst destination array of pointers to data planes
* @param src source array of pointers to data planes
* @param dst_offset offset in samples at which the data will be written to dst
* @param src_offset offset in samples at which the data will be read from src
* @param nb_samples number of samples to be copied
* @param nb_channels number of audio channels
* @param sample_fmt audio sample format
*/
int av_samples_copy(uint8_t **dst, uint8_t * const *src, int dst_offset,
int src_offset, int nb_samples, int nb_channels,
enum AVSampleFormat sample_fmt);
/**
* Fill an audio buffer with silence.
*
* @param audio_data array of pointers to data planes
* @param offset offset in samples at which to start filling
* @param nb_samples number of samples to fill
* @param nb_channels number of audio channels
* @param sample_fmt audio sample format
*/
int av_samples_set_silence(uint8_t **audio_data, int offset, int nb_samples,
int nb_channels, enum AVSampleFormat sample_fmt);
#endif /* AVUTIL_SAMPLEFMT_H */ #endif /* AVUTIL_SAMPLEFMT_H */
...@@ -89,12 +89,17 @@ FATE_SEEK = $(SEEK_TESTS:seek_%=fate-seek-%) ...@@ -89,12 +89,17 @@ FATE_SEEK = $(SEEK_TESTS:seek_%=fate-seek-%)
FATE = $(FATE_ACODEC) \ FATE = $(FATE_ACODEC) \
$(FATE_VCODEC) \ $(FATE_VCODEC) \
$(FATE_LAVF) \ $(FATE_LAVF) \
$(FATE_LIBAVUTIL) \
$(FATE_SEEK) \ $(FATE_SEEK) \
FATE_FFMPEG += $(FATE_FFMPEG-yes) $(FATE_AVCONV) $(FATE_AVCONV-yes)
FATE-$(CONFIG_AVCODEC) += $(FATE_LIBAVCODEC)
FATE-$(CONFIG_AVFILTER) += $(FATE_LAVFI) FATE-$(CONFIG_AVFILTER) += $(FATE_LAVFI)
FATE += $(FATE-yes) FATE += $(FATE-yes)
FATE += $(FATE_LIBAVUTIL)
$(FATE_FFMPEG) $(FATE_LAVF_FATE): ffmpeg$(EXESUF)
$(filter-out %-aref,$(FATE_ACODEC)): $(AREF) $(filter-out %-aref,$(FATE_ACODEC)): $(AREF)
$(filter-out %-vref,$(FATE_VSYNTH1)): fate-vsynth1-vref $(filter-out %-vref,$(FATE_VSYNTH1)): fate-vsynth1-vref
...@@ -121,7 +126,7 @@ fate-seek: $(FATE_SEEK) ...@@ -121,7 +126,7 @@ fate-seek: $(FATE_SEEK)
ifdef SAMPLES ifdef SAMPLES
FATE += $(FATE_LAVF_FATE) FATE += $(FATE_LAVF_FATE)
FATE += $(FATE_TESTS) $(FATE_TESTS-yes) FATE += $(FATE_FFMPEG)
fate-rsync: fate-rsync:
rsync -vaLW --timeout=60 --contimeout=60 rsync://fate.ffmpeg.org/fate-suite/ $(SAMPLES) rsync -vaLW --timeout=60 --contimeout=60 rsync://fate.ffmpeg.org/fate-suite/ $(SAMPLES)
else else
...@@ -139,7 +144,7 @@ TOOL = ffmpeg ...@@ -139,7 +144,7 @@ TOOL = ffmpeg
fate:: $(FATE) fate:: $(FATE)
$(FATE) $(FATE_TESTS-no): ffmpeg$(EXESUF) ffprobe$(EXESUF) $(FATE_UTILS:%=tests/%$(HOSTEXESUF)) $(FATE) $(FATE_TESTS-no): $(FATE_UTILS:%=tests/%$(HOSTEXESUF))
@echo "TEST $(@:fate-%=%)" @echo "TEST $(@:fate-%=%)"
$(Q)$(SRC_PATH)/tests/fate-run.sh $@ "$(SAMPLES)" "$(TARGET_EXEC)" "$(TARGET_PATH)" '$(CMD)' '$(CMP)' '$(REF)' '$(FUZZ)' '$(THREADS)' '$(THREAD_TYPE)' '$(CPUFLAGS)' '$(CMP_SHIFT)' '$(CMP_TARGET)' '$(SIZE_TOLERANCE)' $(Q)$(SRC_PATH)/tests/fate-run.sh $@ "$(SAMPLES)" "$(TARGET_EXEC)" "$(TARGET_PATH)" '$(CMD)' '$(CMP)' '$(REF)' '$(FUZZ)' '$(THREADS)' '$(THREAD_TYPE)' '$(CPUFLAGS)' '$(CMP_SHIFT)' '$(CMP_TARGET)' '$(SIZE_TOLERANCE)'
......
...@@ -88,7 +88,8 @@ fate-aac-ln-encode: CMP_SHIFT = -4096 ...@@ -88,7 +88,8 @@ fate-aac-ln-encode: CMP_SHIFT = -4096
fate-aac-ln-encode: CMP_TARGET = 65 fate-aac-ln-encode: CMP_TARGET = 65
fate-aac-ln-encode: SIZE_TOLERANCE = 3560 fate-aac-ln-encode: SIZE_TOLERANCE = 3560
FATE_TESTS += $(FATE_AAC) $(FATE_AAC_ENCODE) FATE_FFMPEG += $(FATE_AAC) $(FATE_AAC_ENCODE)
fate-aac: $(FATE_AAC) $(FATE_AAC_ENCODE) fate-aac: $(FATE_AAC) $(FATE_AAC_ENCODE)
$(FATE_AAC): CMP = oneoff $(FATE_AAC): CMP = oneoff
$(FATE_AAC): FUZZ = 2 $(FATE_AAC): FUZZ = 2
...@@ -44,5 +44,5 @@ fate-eac3-encode: CMP_SHIFT = -1024 ...@@ -44,5 +44,5 @@ fate-eac3-encode: CMP_SHIFT = -1024
fate-eac3-encode: CMP_TARGET = 514.02 fate-eac3-encode: CMP_TARGET = 514.02
fate-eac3-encode: SIZE_TOLERANCE = 488 fate-eac3-encode: SIZE_TOLERANCE = 488
FATE_TESTS += $(FATE_AC3) FATE_AVCONV += $(FATE_AC3)
fate-ac3: $(FATE_AC3) fate-ac3: $(FATE_AC3)
...@@ -16,14 +16,17 @@ fate-adpcm-creative-8-2.6bit: CMD = md5 -i $(SAMPLES)/creative/BBC_3BIT.VOC -f s ...@@ -16,14 +16,17 @@ fate-adpcm-creative-8-2.6bit: CMD = md5 -i $(SAMPLES)/creative/BBC_3BIT.VOC -f s
FATE_ADPCM += fate-adpcm-creative-8-4bit FATE_ADPCM += fate-adpcm-creative-8-4bit
fate-adpcm-creative-8-4bit: CMD = md5 -i $(SAMPLES)/creative/BBC_4BIT.VOC -f s16le fate-adpcm-creative-8-4bit: CMD = md5 -i $(SAMPLES)/creative/BBC_4BIT.VOC -f s16le
FATE_ADPCM += fate-adpcm-ea-mad-ea-r1 FATE_ADPCM += fate-adpcm-ea-1
fate-adpcm-ea-mad-ea-r1: CMD = framecrc -i $(SAMPLES)/ea-mad/NFS6LogoE.mad fate-adpcm-ea-1: CMD = framecrc -i $(SAMPLES)/ea-wve/networkBackbone-partial.wve -frames:a 26 -vn
FATE_ADPCM += fate-adpcm-ea-2
fate-adpcm-ea-2: CMD = framecrc -i $(SAMPLES)/ea-dct/NFS2Esprit-partial.dct -vn
FATE_ADPCM += fate-adpcm-ea-maxis-xa FATE_ADPCM += fate-adpcm-ea-maxis-xa
fate-adpcm-ea-maxis-xa: CMD = framecrc -i $(SAMPLES)/maxis-xa/SC2KBUG.XA -frames:a 30 fate-adpcm-ea-maxis-xa: CMD = framecrc -i $(SAMPLES)/maxis-xa/SC2KBUG.XA -frames:a 30
FATE_ADPCM += fate-adpcm-ea-tqi FATE_ADPCM += fate-adpcm-ea-r1
fate-adpcm-ea-tqi: CMD = framecrc -i $(SAMPLES)/ea-wve/networkBackbone-partial.wve -frames:v 26 fate-adpcm-ea-r1: CMD = framecrc -i $(SAMPLES)/ea-mad/NFS6LogoE.mad -vn
FATE_ADPCM += fate-adpcm-ima-dk3 FATE_ADPCM += fate-adpcm-ima-dk3
fate-adpcm-ima-dk3: CMD = md5 -i $(SAMPLES)/duck/sop-audio-only.avi -f s16le fate-adpcm-ima-dk3: CMD = md5 -i $(SAMPLES)/duck/sop-audio-only.avi -f s16le
...@@ -31,6 +34,12 @@ fate-adpcm-ima-dk3: CMD = md5 -i $(SAMPLES)/duck/sop-audio-only.avi -f s16le ...@@ -31,6 +34,12 @@ fate-adpcm-ima-dk3: CMD = md5 -i $(SAMPLES)/duck/sop-audio-only.avi -f s16le
FATE_ADPCM += fate-adpcm-ima-dk4 FATE_ADPCM += fate-adpcm-ima-dk4
fate-adpcm-ima-dk4: CMD = md5 -i $(SAMPLES)/duck/salsa-audio-only.avi -f s16le fate-adpcm-ima-dk4: CMD = md5 -i $(SAMPLES)/duck/salsa-audio-only.avi -f s16le
FATE_ADPCM += fate-adpcm-ima-ea-eacs
fate-adpcm-ima-ea-eacs: CMD = framecrc -i $(SAMPLES)/ea-tgv/INTRO8K-partial.TGV -vn
FATE_ADPCM += fate-adpcm-ima-ea-sead
fate-adpcm-ima-ea-sead: CMD = framecrc -i $(SAMPLES)/ea-tgv/INTEL_S.TGV -vn
FATE_ADPCM += fate-adpcm-ima_wav-stereo FATE_ADPCM += fate-adpcm-ima_wav-stereo
fate-adpcm-ima_wav-stereo: CMD = md5 -i $(SAMPLES)/qt-surge-suite/surge-2-16-L-ms11.mov -f s16le fate-adpcm-ima_wav-stereo: CMD = md5 -i $(SAMPLES)/qt-surge-suite/surge-2-16-L-ms11.mov -f s16le
...@@ -38,10 +47,10 @@ FATE_ADPCM += fate-adpcm-psx-str-v3 ...@@ -38,10 +47,10 @@ FATE_ADPCM += fate-adpcm-psx-str-v3
fate-adpcm-psx-str-v3: CMD = framecrc -i $(SAMPLES)/psx-str/abc000_cut.str -vn fate-adpcm-psx-str-v3: CMD = framecrc -i $(SAMPLES)/psx-str/abc000_cut.str -vn
FATE_ADPCM += fate-adpcm-thp FATE_ADPCM += fate-adpcm-thp
fate-adpcm-thp: CMD = framecrc -idct simple -i $(SAMPLES)/thp/pikmin2-opening1-partial.thp fate-adpcm-thp: CMD = framecrc -i $(SAMPLES)/thp/pikmin2-opening1-partial.thp -vn
FATE_ADPCM += fate-adpcm_ms-stereo FATE_ADPCM += fate-adpcm_ms-stereo
fate-adpcm_ms-stereo: CMD = md5 -i $(SAMPLES)/qt-surge-suite/surge-2-16-L-ms02.mov -f s16le fate-adpcm_ms-stereo: CMD = md5 -i $(SAMPLES)/qt-surge-suite/surge-2-16-L-ms02.mov -f s16le
FATE_TESTS += $(FATE_ADPCM) FATE_AVCONV += $(FATE_ADPCM)
fate-adpcm: $(FATE_ADPCM) fate-adpcm: $(FATE_ADPCM)
...@@ -7,5 +7,5 @@ endef ...@@ -7,5 +7,5 @@ endef
$(foreach N,$(ALS_SUITE),$(eval $(call FATE_ALS_SUITE,$(N)))) $(foreach N,$(ALS_SUITE),$(eval $(call FATE_ALS_SUITE,$(N))))
FATE_TESTS += $(FATE_ALS) FATE_AVCONV += $(FATE_ALS)
fate-als: $(FATE_ALS) fate-als: $(FATE_ALS)
...@@ -46,5 +46,5 @@ fate-amrnb-12k2: CMP = stddev ...@@ -46,5 +46,5 @@ fate-amrnb-12k2: CMP = stddev
fate-amrnb-12k2: REF = $(SAMPLES)/amrnb/12.2k.pcm fate-amrnb-12k2: REF = $(SAMPLES)/amrnb/12.2k.pcm
fate-amrnb-12k2: FUZZ = 1 fate-amrnb-12k2: FUZZ = 1
FATE_TESTS += $(FATE_AMRNB) FATE_AVCONV += $(FATE_AMRNB)
fate-amrnb: $(FATE_AMRNB) fate-amrnb: $(FATE_AMRNB)
...@@ -58,5 +58,5 @@ fate-amrwb-23k85-2: CMP = stddev ...@@ -58,5 +58,5 @@ fate-amrwb-23k85-2: CMP = stddev
fate-amrwb-23k85-2: REF = $(SAMPLES)/amrwb/deus-23k85.pcm fate-amrwb-23k85-2: REF = $(SAMPLES)/amrwb/deus-23k85.pcm
fate-amrwb-23k85-2: FUZZ = 1 fate-amrwb-23k85-2: FUZZ = 1
FATE_TESTS += $(FATE_AMRWB) FATE_AVCONV += $(FATE_AMRWB)
fate-amrwb: $(FATE_AMRWB) fate-amrwb: $(FATE_AMRWB)
...@@ -18,5 +18,5 @@ fate-atrac3-3: CMD = pcm -i $(SAMPLES)/atrac3/mc_sich_at3_132_small.wav ...@@ -18,5 +18,5 @@ fate-atrac3-3: CMD = pcm -i $(SAMPLES)/atrac3/mc_sich_at3_132_small.wav
fate-atrac3-3: CMP = oneoff fate-atrac3-3: CMP = oneoff
fate-atrac3-3: REF = $(SAMPLES)/atrac3/mc_sich_at3_132_small.pcm fate-atrac3-3: REF = $(SAMPLES)/atrac3/mc_sich_at3_132_small.pcm
FATE_TESTS += $(FATE_ATRAC) FATE_AVCONV += $(FATE_ATRAC)
fate-atrac: $(FATE_ATRAC) fate-atrac: $(FATE_ATRAC)
...@@ -40,5 +40,5 @@ fate-nellymoser-aref-encode: SIZE_TOLERANCE = 268 ...@@ -40,5 +40,5 @@ fate-nellymoser-aref-encode: SIZE_TOLERANCE = 268
FATE_AUDIO += fate-ws_snd FATE_AUDIO += fate-ws_snd
fate-ws_snd: CMD = md5 -i $(SAMPLES)/vqa/ws_snd.vqa -f s16le fate-ws_snd: CMD = md5 -i $(SAMPLES)/vqa/ws_snd.vqa -f s16le
FATE_TESTS += $(FATE_AUDIO) FATE_FFMPEG += $(FATE_AUDIO)
fate-audio: $(FATE_AUDIO) fate-audio: $(FATE_AUDIO)
...@@ -37,5 +37,5 @@ fate-bmp-rle4: CMD = framecrc -i $(SAMPLES)/bmp/testcompress4.bmp -pix_fmt rgb24 ...@@ -37,5 +37,5 @@ fate-bmp-rle4: CMD = framecrc -i $(SAMPLES)/bmp/testcompress4.bmp -pix_fmt rgb24
FATE_BMP += fate-bmp-rle8 FATE_BMP += fate-bmp-rle8
fate-bmp-rle8: CMD = framecrc -i $(SAMPLES)/bmp/testcompress8.bmp -pix_fmt rgb24 fate-bmp-rle8: CMD = framecrc -i $(SAMPLES)/bmp/testcompress8.bmp -pix_fmt rgb24
FATE_TESTS += $(FATE_BMP) FATE_AVCONV += $(FATE_BMP)
fate-bmp: $(FATE_BMP) fate-bmp: $(FATE_BMP)
...@@ -13,5 +13,5 @@ fate-cdxl-pal8-small: CMD = framecrc -i $(SAMPLES)/cdxl/fruit.cdxl -an -pix_fmt ...@@ -13,5 +13,5 @@ fate-cdxl-pal8-small: CMD = framecrc -i $(SAMPLES)/cdxl/fruit.cdxl -an -pix_fmt
FATE_CDXL += fate-cdxl-bitline-ham6 FATE_CDXL += fate-cdxl-bitline-ham6
fate-cdxl-bitline-ham6: CMD = framecrc -i $(SAMPLES)/cdxl/bitline.cdxl -frames:v 10 fate-cdxl-bitline-ham6: CMD = framecrc -i $(SAMPLES)/cdxl/bitline.cdxl -frames:v 10
FATE_TESTS += $(FATE_CDXL) FATE_AVCONV += $(FATE_CDXL)
fate-cdxl: $(FATE_CDXL) fate-cdxl: $(FATE_CDXL)
FATE_TESTS += fate-idct8x8 FATE-yes += fate-idct8x8
fate-idct8x8: libavcodec/dct-test$(EXESUF) fate-idct8x8: libavcodec/dct-test$(EXESUF)
fate-idct8x8: CMD = run libavcodec/dct-test -i fate-idct8x8: CMD = run libavcodec/dct-test -i
fate-idct8x8: REF = /dev/null fate-idct8x8: REF = /dev/null
......
...@@ -94,5 +94,5 @@ fate-xmv-demux: CMD = framecrc -i $(SAMPLES)/xmv/logos1p.fmv -vcodec copy -acode ...@@ -94,5 +94,5 @@ fate-xmv-demux: CMD = framecrc -i $(SAMPLES)/xmv/logos1p.fmv -vcodec copy -acode
FATE_DEMUX += fate-xwma-demux FATE_DEMUX += fate-xwma-demux
fate-xwma-demux: CMD = crc -i $(SAMPLES)/xwma/ergon.xwma -acodec copy fate-xwma-demux: CMD = crc -i $(SAMPLES)/xwma/ergon.xwma -acodec copy
FATE_TESTS += $(FATE_DEMUX) FATE_FFMPEG += $(FATE_DEMUX)
fate-demux: $(FATE_DEMUX) fate-demux: $(FATE_DEMUX)
...@@ -31,5 +31,5 @@ fate-dfa10: CMD = framecrc -i $(SAMPLES)/chronomaster-dfa/0009.dfa -pix_fmt rgb2 ...@@ -31,5 +31,5 @@ fate-dfa10: CMD = framecrc -i $(SAMPLES)/chronomaster-dfa/0009.dfa -pix_fmt rgb2
FATE_DFA += fate-dfa11 FATE_DFA += fate-dfa11
fate-dfa11: CMD = framecrc -i $(SAMPLES)/chronomaster-dfa/0010.dfa -pix_fmt rgb24 fate-dfa11: CMD = framecrc -i $(SAMPLES)/chronomaster-dfa/0010.dfa -pix_fmt rgb24
FATE_TESTS += $(FATE_DFA) FATE_AVCONV += $(FATE_DFA)
fate-dfa: $(FATE_DFA) fate-dfa: $(FATE_DFA)
FATE_DPCM += fate-dpcm-idroq FATE_DPCM += fate-dpcm-idroq
fate-dpcm-idroq: CMD = framecrc -i $(SAMPLES)/idroq/idlogo.roq fate-dpcm-idroq: CMD = framecrc -i $(SAMPLES)/idroq/idlogo.roq -vn
FATE_DPCM += fate-dpcm-sierra FATE_DPCM += fate-dpcm-sierra
fate-dpcm-sierra: CMD = md5 -i $(SAMPLES)/sol/lsl7sample.sol -f s16le fate-dpcm-sierra: CMD = md5 -i $(SAMPLES)/sol/lsl7sample.sol -f s16le
...@@ -7,5 +7,5 @@ fate-dpcm-sierra: CMD = md5 -i $(SAMPLES)/sol/lsl7sample.sol -f s16le ...@@ -7,5 +7,5 @@ fate-dpcm-sierra: CMD = md5 -i $(SAMPLES)/sol/lsl7sample.sol -f s16le
FATE_DPCM += fate-dpcm-xan FATE_DPCM += fate-dpcm-xan
fate-dpcm-xan: CMD = md5 -i $(SAMPLES)/wc4-xan/wc4_2.avi -vn -f s16le fate-dpcm-xan: CMD = md5 -i $(SAMPLES)/wc4-xan/wc4_2.avi -vn -f s16le
FATE_TESTS += $(FATE_DPCM) FATE_AVCONV += $(FATE_DPCM)
fate-dpcm: $(FATE_DPCM) fate-dpcm: $(FATE_DPCM)
...@@ -4,17 +4,20 @@ fate-ea-cdata: CMD = md5 -i $(SAMPLES)/ea-cdata/166b084d.46410f77.0009b440.24be9 ...@@ -4,17 +4,20 @@ fate-ea-cdata: CMD = md5 -i $(SAMPLES)/ea-cdata/166b084d.46410f77.0009b440.24be9
FATE_EA += fate-ea-cmv FATE_EA += fate-ea-cmv
fate-ea-cmv: CMD = framecrc -i $(SAMPLES)/ea-cmv/TITLE.CMV -pix_fmt rgb24 fate-ea-cmv: CMD = framecrc -i $(SAMPLES)/ea-cmv/TITLE.CMV -pix_fmt rgb24
FATE_EA += fate-ea-dct
fate-ea-dct: CMD = framecrc -idct simple -i $(SAMPLES)/ea-dct/NFS2Esprit-partial.dct
FATE_EA += fate-ea-tgq FATE_EA += 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_EA += fate-ea-tgv-ima-ea-eacs FATE_EA += fate-ea-tqi
fate-ea-tgv-ima-ea-eacs: CMD = framecrc -i $(SAMPLES)/ea-tgv/INTRO8K-partial.TGV -pix_fmt rgb24 fate-ea-tqi: CMD = framecrc -i $(SAMPLES)/ea-wve/networkBackbone-partial.wve -frames:v 26 -an
FATE_EA += fate-ea-mad
fate-ea-mad: CMD = framecrc -i $(SAMPLES)/ea-mad/NFS6LogoE.mad -an
FATE_EA += fate-ea-tgv-1
fate-ea-tgv-1: CMD = framecrc -i $(SAMPLES)/ea-tgv/INTRO8K-partial.TGV -pix_fmt rgb24 -an
FATE_EA += fate-ea-tgv-ima-ea-sead FATE_EA += fate-ea-tgv-2
fate-ea-tgv-ima-ea-sead: CMD = framecrc -i $(SAMPLES)/ea-tgv/INTEL_S.TGV -pix_fmt rgb24 fate-ea-tgv-2: CMD = framecrc -i $(SAMPLES)/ea-tgv/INTEL_S.TGV -pix_fmt rgb24 -an
FATE_TESTS += $(FATE_EA) FATE_FFMPEG += $(FATE_EA)
fate-ea: $(FATE_EA) fate-ea: $(FATE_EA)
...@@ -38,5 +38,5 @@ $(FATE_FFT_FIXED): libavcodec/fft-fixed-test$(EXESUF) ...@@ -38,5 +38,5 @@ $(FATE_FFT_FIXED): libavcodec/fft-fixed-test$(EXESUF)
$(FATE_FFT_FIXED): CMD = run libavcodec/fft-fixed-test $(CPUFLAGS:%=-c%) $(ARGS) $(FATE_FFT_FIXED): CMD = run libavcodec/fft-fixed-test $(CPUFLAGS:%=-c%) $(ARGS)
$(FATE_FFT_FIXED): REF = /dev/null $(FATE_FFT_FIXED): REF = /dev/null
FATE_TESTS += $(FATE_FFT) $(FATE_FFT_FIXED) FATE-$(CONFIG_FFT) += $(FATE_FFT) $(FATE_FFT_FIXED)
fate-fft: $(FATE_FFT) $(FATE_FFT_FIXED) fate-fft: $(FATE_FFT) $(FATE_FFT_FIXED)
...@@ -188,7 +188,7 @@ FATE_H264 := $(FATE_H264:%=fate-h264-conformance-%) \ ...@@ -188,7 +188,7 @@ FATE_H264 := $(FATE_H264:%=fate-h264-conformance-%) \
fate-h264-extreme-plane-pred \ fate-h264-extreme-plane-pred \
fate-h264-bsf-mp4toannexb \ fate-h264-bsf-mp4toannexb \
FATE_TESTS += $(FATE_H264) FATE_AVCONV += $(FATE_H264)
fate-h264: $(FATE_H264) fate-h264: $(FATE_H264)
fate-h264-conformance-aud_mw_e: CMD = framecrc -vsync drop -i $(SAMPLES)/h264-conformance/AUD_MW_E.264 fate-h264-conformance-aud_mw_e: CMD = framecrc -vsync drop -i $(SAMPLES)/h264-conformance/AUD_MW_E.264
......
...@@ -70,6 +70,6 @@ fate-tiff-fax-g3s: CMD = framecrc -i $(SAMPLES)/CCITT_fax/G31DS.TIF ...@@ -70,6 +70,6 @@ fate-tiff-fax-g3s: CMD = framecrc -i $(SAMPLES)/CCITT_fax/G31DS.TIF
FATE_IMAGE += $(FATE_TIFF) FATE_IMAGE += $(FATE_TIFF)
fate-tiff: $(FATE_TIFF) fate-tiff: $(FATE_TIFF)
FATE_TESTS += $(FATE_IMAGE) FATE_FFMPEG += $(FATE_IMAGE)
fate-image: $(FATE_IMAGE) fate-image: $(FATE_IMAGE)
...@@ -10,5 +10,5 @@ fate-indeo4: CMD = framecrc -i $(SAMPLES)/iv41/indeo41-partial.avi -an ...@@ -10,5 +10,5 @@ fate-indeo4: CMD = framecrc -i $(SAMPLES)/iv41/indeo41-partial.avi -an
FATE_INDEO += fate-indeo5 FATE_INDEO += fate-indeo5
fate-indeo5: CMD = framecrc -i $(SAMPLES)/iv50/Educ_Movie_DeadlyForce.avi -an fate-indeo5: CMD = framecrc -i $(SAMPLES)/iv50/Educ_Movie_DeadlyForce.avi -an
FATE_TESTS += $(FATE_INDEO) FATE_AVCONV += $(FATE_INDEO)
fate-indeo: $(FATE_INDEO) fate-indeo: $(FATE_INDEO)
FATE_TESTS += fate-golomb FATE_LIBAVCODEC += fate-golomb
fate-golomb: libavcodec/golomb-test$(EXESUF) fate-golomb: libavcodec/golomb-test$(EXESUF)
fate-golomb: CMD = run libavcodec/golomb-test fate-golomb: CMD = run libavcodec/golomb-test
fate-golomb: REF = /dev/null fate-golomb: REF = /dev/null
FATE_TESTS += fate-iirfilter FATE_LIBAVCODEC += fate-iirfilter
fate-iirfilter: libavcodec/iirfilter-test$(EXESUF) fate-iirfilter: libavcodec/iirfilter-test$(EXESUF)
fate-iirfilter: CMD = run libavcodec/iirfilter-test fate-iirfilter: CMD = run libavcodec/iirfilter-test
fate-libavcodec: $(FATE_LIBAVCODEC)
...@@ -16,6 +16,6 @@ fate-lossless-tta: CMD = crc -i $(SAMPLES)/lossless-audio/inside.tta ...@@ -16,6 +16,6 @@ fate-lossless-tta: CMD = crc -i $(SAMPLES)/lossless-audio/inside.tta
FATE_LOSSLESS_AUDIO += fate-lossless-wma FATE_LOSSLESS_AUDIO += fate-lossless-wma
fate-lossless-wma: CMD = md5 -i $(SAMPLES)/lossless-audio/luckynight-partial.wma -f s16le fate-lossless-wma: CMD = md5 -i $(SAMPLES)/lossless-audio/luckynight-partial.wma -f s16le
FATE_TESTS += $(FATE_LOSSLESS_AUDIO) FATE_FFMPEG += $(FATE_LOSSLESS_AUDIO)
fate-lossless-audio: $(FATE_LOSSLESS_AUDIO) fate-lossless-audio: $(FATE_LOSSLESS_AUDIO)
...@@ -22,6 +22,6 @@ fate-zlib: CMD = framecrc -i $(SAMPLES)/lcl/zlib-1frame.avi ...@@ -22,6 +22,6 @@ fate-zlib: CMD = framecrc -i $(SAMPLES)/lcl/zlib-1frame.avi
FATE_LOSSLESS_VIDEO += fate-zerocodec FATE_LOSSLESS_VIDEO += fate-zerocodec
fate-zerocodec: CMD = framecrc -i $(SAMPLES)/zerocodec/sample-zeco.avi fate-zerocodec: CMD = framecrc -i $(SAMPLES)/zerocodec/sample-zeco.avi
FATE_TESTS += $(FATE_LOSSLESS_VIDEO) FATE_FFMPEG += $(FATE_LOSSLESS_VIDEO)
fate-lossless-video: $(FATE_LOSSLESS_VIDEO) fate-lossless-video: $(FATE_LOSSLESS_VIDEO)
...@@ -10,5 +10,5 @@ FATE_MAPCHAN += fate-mapchan-silent-mono ...@@ -10,5 +10,5 @@ FATE_MAPCHAN += fate-mapchan-silent-mono
fate-mapchan-silent-mono: tests/data/asynth-22050-1.wav fate-mapchan-silent-mono: tests/data/asynth-22050-1.wav
fate-mapchan-silent-mono: CMD = md5 -i $(TARGET_PATH)/tests/data/asynth-22050-1.wav -map_channel -1 -map_channel 0.0.0 -f wav fate-mapchan-silent-mono: CMD = md5 -i $(TARGET_PATH)/tests/data/asynth-22050-1.wav -map_channel -1 -map_channel 0.0.0 -f wav
FATE_TESTS += $(FATE_MAPCHAN) FATE_FFMPEG += $(FATE_MAPCHAN)
fate-mapchan: $(FATE_MAPCHAN) fate-mapchan: $(FATE_MAPCHAN)
...@@ -42,5 +42,5 @@ fate-vc1-ism: CMD = framecrc -i $(SAMPLES)/isom/vc1-wmapro.ism -an ...@@ -42,5 +42,5 @@ fate-vc1-ism: CMD = framecrc -i $(SAMPLES)/isom/vc1-wmapro.ism -an
FATE_MICROSOFT += $(FATE_VC1) FATE_MICROSOFT += $(FATE_VC1)
fate-vc1: $(FATE_VC1) fate-vc1: $(FATE_VC1)
FATE_TESTS += $(FATE_MICROSOFT) FATE_FFMPEG += $(FATE_MICROSOFT)
fate-microsoft: $(FATE_MICROSOFT) fate-microsoft: $(FATE_MICROSOFT)
...@@ -38,7 +38,7 @@ fate-mp3-float-extra_overread: CMD = pcm -c:a mp3float -i $(SAMPLES)/mpegaudio/e ...@@ -38,7 +38,7 @@ fate-mp3-float-extra_overread: CMD = pcm -c:a mp3float -i $(SAMPLES)/mpegaudio/e
fate-mp3-float-extra_overread: CMP = stddev fate-mp3-float-extra_overread: CMP = stddev
fate-mp3-float-extra_overread: REF = $(SAMPLES)/mpegaudio/extra_overread.pcm fate-mp3-float-extra_overread: REF = $(SAMPLES)/mpegaudio/extra_overread.pcm
FATE_TESTS += $(FATE_MP3) FATE_AVCONV += $(FATE_MP3)
fate-mp3: $(FATE_MP3) fate-mp3: $(FATE_MP3)
$(FATE_MP3): CMP = stddev $(FATE_MP3): CMP = stddev
$(FATE_MP3): FUZZ = 0.07 $(FATE_MP3): FUZZ = 0.07
...@@ -10,5 +10,5 @@ fate-musepack7: CMP = oneoff ...@@ -10,5 +10,5 @@ fate-musepack7: CMP = oneoff
fate-musepack7: REF = $(SAMPLES)/musepack/inside-mp7.pcm fate-musepack7: REF = $(SAMPLES)/musepack/inside-mp7.pcm
fate-musepack7: FUZZ = 1 fate-musepack7: FUZZ = 1
FATE_TESTS += $(FATE_MPC) FATE_FFMPEG += $(FATE_MPC)
fate-mpc: $(FATE_MPC) fate-mpc: $(FATE_MPC)
...@@ -30,5 +30,5 @@ fate-dcinema-encode: tests/data/asynth-96000-6.wav ...@@ -30,5 +30,5 @@ fate-dcinema-encode: tests/data/asynth-96000-6.wav
fate-dcinema-encode: SRC = tests/data/asynth-96000-6.wav fate-dcinema-encode: SRC = tests/data/asynth-96000-6.wav
fate-dcinema-encode: CMD = enc_dec_pcm daud md5 s16le $(SRC) -c:a pcm_s24daud fate-dcinema-encode: CMD = enc_dec_pcm daud md5 s16le $(SRC) -c:a pcm_s24daud
FATE_TESTS += $(FATE_PCM) FATE_AVCONV += $(FATE_PCM)
fate-pcm: $(FATE_PCM) fate-pcm: $(FATE_PCM)
...@@ -10,8 +10,9 @@ fate-probe-format-roundup1414: REF = format_name=mpeg ...@@ -10,8 +10,9 @@ fate-probe-format-roundup1414: REF = format_name=mpeg
FATE_PROBE_FORMAT += fate-probe-format-roundup2015 FATE_PROBE_FORMAT += fate-probe-format-roundup2015
fate-probe-format-roundup2015: REF = format_name=dv fate-probe-format-roundup2015: REF = format_name=dv
FATE_TESTS += $(FATE_PROBE_FORMAT) FATE-$(CONFIG_FFPROBE) += $(FATE_PROBE_FORMAT)
fate-probe-format: $(FATE_PROBE_FORMAT) fate-probe-format: $(FATE_PROBE_FORMAT)
$(FATE_PROBE_FORMAT): ffprobe$(EXESUF)
$(FATE_PROBE_FORMAT): CMP = oneline $(FATE_PROBE_FORMAT): CMP = oneline
fate-probe-format-%: CMD = probefmt $(SAMPLES)/probe-format/$(@:fate-probe-format-%=%) fate-probe-format-%: CMD = probefmt $(SAMPLES)/probe-format/$(@:fate-probe-format-%=%)
...@@ -4,7 +4,7 @@ FATE_PRORES = fate-prores-422 \ ...@@ -4,7 +4,7 @@ FATE_PRORES = fate-prores-422 \
fate-prores-422_proxy \ fate-prores-422_proxy \
fate-prores-alpha \ fate-prores-alpha \
FATE_TESTS += $(FATE_PRORES) FATE_AVCONV += $(FATE_PRORES)
fate-prores: $(FATE_PRORES) fate-prores: $(FATE_PRORES)
fate-prores-422: CMD = framecrc -flags +bitexact -i $(SAMPLES)/prores/Sequence_1-Apple_ProRes_422.mov -pix_fmt yuv422p10le fate-prores-422: CMD = framecrc -flags +bitexact -i $(SAMPLES)/prores/Sequence_1-Apple_ProRes_422.mov -pix_fmt yuv422p10le
......
...@@ -49,5 +49,5 @@ fate-svq1: CMD = framecrc -i $(SAMPLES)/svq1/marymary-shackles.mov -an -t 10 ...@@ -49,5 +49,5 @@ fate-svq1: CMD = framecrc -i $(SAMPLES)/svq1/marymary-shackles.mov -an -t 10
FATE_QT += fate-svq3 FATE_QT += 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_QT) FATE_FFMPEG += $(FATE_QT)
fate-qt: $(FATE_QT) fate-qt: $(FATE_QT)
...@@ -19,5 +19,5 @@ fate-qtrle-24bit: CMD = framecrc -i $(SAMPLES)/qtrle/aletrek-rle.mov ...@@ -19,5 +19,5 @@ fate-qtrle-24bit: CMD = framecrc -i $(SAMPLES)/qtrle/aletrek-rle.mov
FATE_QTRLE += fate-qtrle-32bit FATE_QTRLE += fate-qtrle-32bit
fate-qtrle-32bit: CMD = framecrc -i $(SAMPLES)/qtrle/ultra_demo_720_480_32bpp_rle.mov -pix_fmt rgb24 fate-qtrle-32bit: CMD = framecrc -i $(SAMPLES)/qtrle/ultra_demo_720_480_32bpp_rle.mov -pix_fmt rgb24
FATE_TESTS += $(FATE_QTRLE) FATE_AVCONV += $(FATE_QTRLE)
fate-qtrle: $(FATE_QTRLE) fate-qtrle: $(FATE_QTRLE)
FATE_REAL += fate-real-14_4 FATE_REAL += fate-ra-144
fate-real-14_4: CMD = md5 -i $(SAMPLES)/real/ra3_in_rm_file.rm -f s16le fate-ra-144: CMD = md5 -i $(SAMPLES)/real/ra3_in_rm_file.rm -f s16le
FATE_REAL += fate-ra-288 FATE_REAL += fate-ra-288
fate-ra-288: CMD = pcm -i $(SAMPLES)/real/ra_288.rm fate-ra-288: CMD = pcm -i $(SAMPLES)/real/ra_288.rm
...@@ -18,8 +18,8 @@ fate-ralf: CMD = md5 -i $(SAMPLES)/lossless-audio/luckynight-partial.rmvb -vn -f ...@@ -18,8 +18,8 @@ fate-ralf: CMD = md5 -i $(SAMPLES)/lossless-audio/luckynight-partial.rmvb -vn -f
FATE_REAL += fate-rv30 FATE_REAL += fate-rv30
fate-rv30: CMD = framecrc -flags +bitexact -dct fastint -idct simple -i $(SAMPLES)/real/rv30.rm -an fate-rv30: CMD = framecrc -flags +bitexact -dct fastint -idct simple -i $(SAMPLES)/real/rv30.rm -an
FATE_REAL += fate-real-rv40 FATE_REAL += fate-rv40
fate-real-rv40: CMD = framecrc -i $(SAMPLES)/real/spygames-2MB.rmvb -t 10 -an fate-rv40: CMD = framecrc -i $(SAMPLES)/real/spygames-2MB.rmvb -t 10 -an
FATE_SIPR += fate-sipr-5k0 FATE_SIPR += fate-sipr-5k0
fate-sipr-5k0: CMD = pcm -i $(SAMPLES)/sipr/sipr_5k0.rm fate-sipr-5k0: CMD = pcm -i $(SAMPLES)/sipr/sipr_5k0.rm
...@@ -44,5 +44,5 @@ fate-sipr-16k: REF = $(SAMPLES)/sipr/sipr_16k.pcm ...@@ -44,5 +44,5 @@ fate-sipr-16k: REF = $(SAMPLES)/sipr/sipr_16k.pcm
FATE_REAL += $(FATE_SIPR) FATE_REAL += $(FATE_SIPR)
fate-sipr: $(FATE_SIPR) fate-sipr: $(FATE_SIPR)
FATE_TESTS += $(FATE_REAL) FATE_FFMPEG += $(FATE_REAL)
fate-real: $(FATE_REAL) fate-real: $(FATE_REAL)
...@@ -59,5 +59,5 @@ fate-zmbv-32bit: CMD = framecrc -i $(SAMPLES)/zmbv/zmbv_32bit.avi -pix_fmt rgb24 ...@@ -59,5 +59,5 @@ fate-zmbv-32bit: CMD = framecrc -i $(SAMPLES)/zmbv/zmbv_32bit.avi -pix_fmt rgb24
FATE_SCREEN += $(FATE_ZMBV) FATE_SCREEN += $(FATE_ZMBV)
fate-zmbv: $(FATE_ZMBV) fate-zmbv: $(FATE_ZMBV)
FATE_TESTS += $(FATE_SCREEN) FATE_FFMPEG += $(FATE_SCREEN)
fate-screen: $(FATE_SCREEN) fate-screen: $(FATE_SCREEN)
...@@ -22,5 +22,5 @@ fate-utvideo_yuv422_left: CMD = framecrc -i $(SAMPLES)/utvideo/utvideo_yuv422_le ...@@ -22,5 +22,5 @@ fate-utvideo_yuv422_left: CMD = framecrc -i $(SAMPLES)/utvideo/utvideo_yuv422_le
FATE_UTVIDEO += fate-utvideo_yuv422_median FATE_UTVIDEO += fate-utvideo_yuv422_median
fate-utvideo_yuv422_median: CMD = framecrc -i $(SAMPLES)/utvideo/utvideo_yuv422_median.avi fate-utvideo_yuv422_median: CMD = framecrc -i $(SAMPLES)/utvideo/utvideo_yuv422_median.avi
FATE_TESTS += $(FATE_UTVIDEO) FATE_AVCONV += $(FATE_UTVIDEO)
fate-utvideo: $(FATE_UTVIDEO) fate-utvideo: $(FATE_UTVIDEO)
...@@ -133,6 +133,9 @@ fate-kgv1: CMD = framecrc -i $(SAMPLES)/kega/kgv1.avi -pix_fmt rgb555le -an ...@@ -133,6 +133,9 @@ fate-kgv1: CMD = framecrc -i $(SAMPLES)/kega/kgv1.avi -pix_fmt rgb555le -an
FATE_VIDEO += fate-kmvc FATE_VIDEO += fate-kmvc
fate-kmvc: CMD = framecrc -i $(SAMPLES)/KMVC/LOGO1.AVI -an -t 3 -pix_fmt rgb24 fate-kmvc: CMD = framecrc -i $(SAMPLES)/KMVC/LOGO1.AVI -an -t 3 -pix_fmt rgb24
FATE_VIDEO += fate-mdec
fate-mdec: CMD = framecrc -idct simple -i $(SAMPLES)/ea-dct/NFS2Esprit-partial.dct -an
FATE_VIDEO += fate-mimic FATE_VIDEO += fate-mimic
fate-mimic: CMD = framecrc -idct simple -i $(SAMPLES)/mimic/mimic2-womanloveffmpeg.cam fate-mimic: CMD = framecrc -idct simple -i $(SAMPLES)/mimic/mimic2-womanloveffmpeg.cam
...@@ -145,6 +148,7 @@ fate-motionpixels: CMD = framecrc -i $(SAMPLES)/motion-pixels/INTRO-partial.MVI ...@@ -145,6 +148,7 @@ fate-motionpixels: CMD = framecrc -i $(SAMPLES)/motion-pixels/INTRO-partial.MVI
FATE_VIDEO += fate-mpeg2-field-enc FATE_VIDEO += fate-mpeg2-field-enc
fate-mpeg2-field-enc: CMD = framecrc -flags +bitexact -dct fastint -idct simple -i $(SAMPLES)/mpeg2/mpeg2_field_encoding.ts -an fate-mpeg2-field-enc: CMD = framecrc -flags +bitexact -dct fastint -idct simple -i $(SAMPLES)/mpeg2/mpeg2_field_encoding.ts -an
# FIXME dropped frames in this test because of coarse timebase
FATE_VIDEO += fate-nuv FATE_VIDEO += fate-nuv
fate-nuv: CMD = framecrc -idct simple -i $(SAMPLES)/nuv/Today.nuv -an fate-nuv: CMD = framecrc -idct simple -i $(SAMPLES)/nuv/Today.nuv -an
...@@ -157,6 +161,9 @@ fate-r210: CMD = framecrc -i $(SAMPLES)/r210/r210.avi -pix_fmt rgb48le ...@@ -157,6 +161,9 @@ fate-r210: CMD = framecrc -i $(SAMPLES)/r210/r210.avi -pix_fmt rgb48le
FATE_VIDEO += fate-rl2 FATE_VIDEO += fate-rl2
fate-rl2: CMD = framecrc -i $(SAMPLES)/rl2/Z4915300.RL2 -pix_fmt rgb24 -an fate-rl2: CMD = framecrc -i $(SAMPLES)/rl2/Z4915300.RL2 -pix_fmt rgb24 -an
FATE_VIDEO += fate-roqvideo
fate-roqvideo: CMD = framecrc -i $(SAMPLES)/idroq/idlogo.roq -an
FATE_VIDEO += fate-smacker FATE_VIDEO += fate-smacker
fate-smacker: CMD = framecrc -i $(SAMPLES)/smacker/wetlogo.smk -pix_fmt rgb24 fate-smacker: CMD = framecrc -i $(SAMPLES)/smacker/wetlogo.smk -pix_fmt rgb24
...@@ -169,6 +176,9 @@ fate-sp5x: CMD = framecrc -idct simple -i $(SAMPLES)/sp5x/sp5x_problem.avi ...@@ -169,6 +176,9 @@ fate-sp5x: CMD = framecrc -idct simple -i $(SAMPLES)/sp5x/sp5x_problem.avi
FATE_VIDEO += fate-sub-srt FATE_VIDEO += fate-sub-srt
fate-sub-srt: CMD = md5 -i $(SAMPLES)/sub/SubRip_capability_tester.srt -f ass fate-sub-srt: CMD = md5 -i $(SAMPLES)/sub/SubRip_capability_tester.srt -f ass
FATE_VIDEO += fate-thp
fate-thp: CMD = framecrc -idct simple -i $(SAMPLES)/thp/pikmin2-opening1-partial.thp -an
FATE_VIDEO += fate-tiertex-seq FATE_VIDEO += 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
...@@ -218,5 +228,5 @@ fate-yop: CMD = framecrc -i $(SAMPLES)/yop/test1.yop -pix_fmt rgb24 -an ...@@ -218,5 +228,5 @@ fate-yop: CMD = framecrc -i $(SAMPLES)/yop/test1.yop -pix_fmt rgb24 -an
FATE_VIDEO += fate-xxan-wc4 FATE_VIDEO += fate-xxan-wc4
fate-xxan-wc4: CMD = framecrc -i $(SAMPLES)/wc4-xan/wc4trailer-partial.avi -an fate-xxan-wc4: CMD = framecrc -i $(SAMPLES)/wc4-xan/wc4trailer-partial.avi -an
FATE_TESTS += $(FATE_VIDEO) FATE_FFMPEG += $(FATE_VIDEO)
fate-video: $(FATE_VIDEO) fate-video: $(FATE_VIDEO)
...@@ -51,5 +51,5 @@ fate-truespeech: CMD = pcm -i $(SAMPLES)/truespeech/a6.wav ...@@ -51,5 +51,5 @@ fate-truespeech: CMD = pcm -i $(SAMPLES)/truespeech/a6.wav
fate-truespeech: CMP = oneoff fate-truespeech: CMP = oneoff
fate-truespeech: REF = $(SAMPLES)/truespeech/a6.pcm fate-truespeech: REF = $(SAMPLES)/truespeech/a6.pcm
FATE_TESTS += $(FATE_VOICE) FATE_FFMPEG += $(FATE_VOICE)
fate-voice: $(FATE_VOICE) fate-voice: $(FATE_VOICE)
...@@ -75,6 +75,6 @@ FATE_VORBIS += fate-vorbis-19 ...@@ -75,6 +75,6 @@ FATE_VORBIS += fate-vorbis-19
fate-vorbis-19: CMD = pcm -i $(SAMPLES)/vorbis/test-short2_small.ogg fate-vorbis-19: CMD = pcm -i $(SAMPLES)/vorbis/test-short2_small.ogg
fate-vorbis-19: REF = $(SAMPLES)/vorbis/test-short2_small.pcm fate-vorbis-19: REF = $(SAMPLES)/vorbis/test-short2_small.pcm
FATE_TESTS += $(FATE_VORBIS) FATE_AVCONV += $(FATE_VORBIS)
fate-vorbis: $(FATE_VORBIS) fate-vorbis: $(FATE_VORBIS)
$(FATE_VORBIS): CMP = oneoff $(FATE_VORBIS): CMP = oneoff
FATE_TESTS += fate-ea-vp60 FATE_EA_VP6 += fate-ea-vp60
fate-ea-vp60: CMD = framecrc -i $(SAMPLES)/ea-vp6/g36.vp6 fate-ea-vp60: CMD = framecrc -i $(SAMPLES)/ea-vp6/g36.vp6
FATE_TESTS += fate-ea-vp61 FATE_EA_VP6 += fate-ea-vp61
fate-ea-vp61: CMD = framecrc -i $(SAMPLES)/ea-vp6/MovieSkirmishGondor.vp6 -t 4 fate-ea-vp61: CMD = framecrc -i $(SAMPLES)/ea-vp6/MovieSkirmishGondor.vp6 -t 4
FATE_AVCONV += $(FATE_EA_VP6)
fate-ea-vp6: $(FATE_EA_VP6)
FATE_VP3 += fate-vp31 FATE_VP3 += fate-vp31
fate-vp31: CMD = framecrc -i $(SAMPLES)/vp3/vp31.avi fate-vp31: CMD = framecrc -i $(SAMPLES)/vp3/vp31.avi
FATE_VP3 += fate-vp3-coeff-level64 FATE_VP3 += fate-vp3-coeff-level64
fate-vp3-coeff-level64: CMD = framecrc -i $(SAMPLES)/vp3/coeff_level64.mkv fate-vp3-coeff-level64: CMD = framecrc -i $(SAMPLES)/vp3/coeff_level64.mkv
FATE_TESTS += $(FATE_VP3) FATE_AVCONV += $(FATE_VP3)
fate-vp3: $(FATE_VP3) fate-vp3: $(FATE_VP3)
FATE_TESTS += fate-vp5 FATE_AVCONV += fate-vp5
fate-vp5: CMD = framecrc -i $(SAMPLES)/vp5/potter512-400-partial.avi -an fate-vp5: CMD = framecrc -i $(SAMPLES)/vp5/potter512-400-partial.avi -an
FATE_TESTS += fate-vp6a FATE_AVCONV += fate-vp6a
fate-vp6a: CMD = framecrc -i $(SAMPLES)/flash-vp6/300x180-Scr-f8-056alpha.flv fate-vp6a: CMD = framecrc -i $(SAMPLES)/flash-vp6/300x180-Scr-f8-056alpha.flv
FATE_TESTS += fate-vp6f FATE_AVCONV += fate-vp6f
fate-vp6f: CMD = framecrc -i $(SAMPLES)/flash-vp6/clip1024.flv fate-vp6f: CMD = framecrc -i $(SAMPLES)/flash-vp6/clip1024.flv
VP8_SUITE = 001 002 003 004 005 006 007 008 009 010 011 012 013 014 015 016 017 VP8_SUITE = 001 002 003 004 005 006 007 008 009 010 011 012 013 014 015 016 017
...@@ -46,5 +49,5 @@ endef ...@@ -46,5 +49,5 @@ endef
$(eval $(call FATE_VP8_FULL)) $(eval $(call FATE_VP8_FULL))
$(eval $(call FATE_VP8_FULL,-emu-edge,-flags +emu_edge)) $(eval $(call FATE_VP8_FULL,-emu-edge,-flags +emu_edge))
FATE_TESTS += $(FATE_VP8) FATE_AVCONV += $(FATE_VP8)
fate-vp8: $(FATE_VP8) fate-vp8: $(FATE_VP8)
...@@ -6,5 +6,5 @@ fate-twinvq: REF = $(SAMPLES)/vqf/achterba.pcm ...@@ -6,5 +6,5 @@ fate-twinvq: REF = $(SAMPLES)/vqf/achterba.pcm
FATE_VQF += fate-vqf-demux FATE_VQF += fate-vqf-demux
fate-vqf-demux: CMD = md5 -i $(SAMPLES)/vqf/achterba.vqf -acodec copy -f framecrc fate-vqf-demux: CMD = md5 -i $(SAMPLES)/vqf/achterba.vqf -acodec copy -f framecrc
FATE_TESTS += $(FATE_VQF) FATE_FFMPEG += $(FATE_VQF)
fate-vqf: $(FATE_VQF) fate-vqf: $(FATE_VQF)
# Lossless # lossless
FATE_WAVPACK += fate-wavpack-lossless-float FATE_WAVPACK += fate-wavpack-lossless-float
fate-wavpack-lossless-float: CMD = md5 -i $(SAMPLES)/wavpack/lossless/32bit_float-partial.wv -f f32le fate-wavpack-lossless-float: CMD = md5 -i $(SAMPLES)/wavpack/lossless/32bit_float-partial.wv -f f32le
...@@ -18,7 +18,7 @@ fate-wavpack-lossless-24bit: CMD = md5 -i $(SAMPLES)/wavpack/lossless/24bit-part ...@@ -18,7 +18,7 @@ fate-wavpack-lossless-24bit: CMD = md5 -i $(SAMPLES)/wavpack/lossless/24bit-part
FATE_WAVPACK += fate-wavpack-lossless-32bit FATE_WAVPACK += fate-wavpack-lossless-32bit
fate-wavpack-lossless-32bit: CMD = md5 -i $(SAMPLES)/wavpack/lossless/32bit_int-partial.wv -f s32le fate-wavpack-lossless-32bit: CMD = md5 -i $(SAMPLES)/wavpack/lossless/32bit_int-partial.wv -f s32le
# Lossy # lossy
FATE_WAVPACK += fate-wavpack-lossy-float FATE_WAVPACK += fate-wavpack-lossy-float
fate-wavpack-lossy-float: CMD = md5 -i $(SAMPLES)/wavpack/lossy/2.0_32-bit_float.wv -f f32le fate-wavpack-lossy-float: CMD = md5 -i $(SAMPLES)/wavpack/lossy/2.0_32-bit_float.wv -f f32le
...@@ -35,7 +35,7 @@ fate-wavpack-lossy-24bit: CMD = md5 -i $(SAMPLES)/wavpack/lossy/4.0_24-bit.wv -f ...@@ -35,7 +35,7 @@ fate-wavpack-lossy-24bit: CMD = md5 -i $(SAMPLES)/wavpack/lossy/4.0_24-bit.wv -f
FATE_WAVPACK += fate-wavpack-lossy-32bit FATE_WAVPACK += fate-wavpack-lossy-32bit
fate-wavpack-lossy-32bit: CMD = md5 -i $(SAMPLES)/wavpack/lossy/4.0_32-bit_int.wv -f s32le fate-wavpack-lossy-32bit: CMD = md5 -i $(SAMPLES)/wavpack/lossy/4.0_32-bit_int.wv -f s32le
# Channel configurations # channel configurations
FATE_WAVPACK += fate-wavpack-channels-monofloat FATE_WAVPACK += fate-wavpack-channels-monofloat
fate-wavpack-channels-monofloat: CMD = md5 -i $(SAMPLES)/wavpack/num_channels/mono_float-partial.wv -f f32le fate-wavpack-channels-monofloat: CMD = md5 -i $(SAMPLES)/wavpack/num_channels/mono_float-partial.wv -f f32le
...@@ -55,7 +55,7 @@ fate-wavpack-channels-6.1: CMD = md5 -i $(SAMPLES)/wavpack/num_channels/eva_2.22 ...@@ -55,7 +55,7 @@ fate-wavpack-channels-6.1: CMD = md5 -i $(SAMPLES)/wavpack/num_channels/eva_2.22
FATE_WAVPACK += fate-wavpack-channels-7.1 FATE_WAVPACK += fate-wavpack-channels-7.1
fate-wavpack-channels-7.1: CMD = md5 -i $(SAMPLES)/wavpack/num_channels/panslab_sample_7.1_16bit-partial.wv -f s16le fate-wavpack-channels-7.1: CMD = md5 -i $(SAMPLES)/wavpack/num_channels/panslab_sample_7.1_16bit-partial.wv -f s16le
# Speed modes # speed modes
FATE_WAVPACK += fate-wavpack-speed-default FATE_WAVPACK += fate-wavpack-speed-default
fate-wavpack-speed-default: CMD = md5 -i $(SAMPLES)/wavpack/speed_modes/default-partial.wv -f s16le fate-wavpack-speed-default: CMD = md5 -i $(SAMPLES)/wavpack/speed_modes/default-partial.wv -f s16le
...@@ -69,7 +69,7 @@ fate-wavpack-speed-high: CMD = md5 -i $(SAMPLES)/wavpack/speed_modes/high-partia ...@@ -69,7 +69,7 @@ fate-wavpack-speed-high: CMD = md5 -i $(SAMPLES)/wavpack/speed_modes/high-partia
FATE_WAVPACK += fate-wavpack-speed-vhigh FATE_WAVPACK += fate-wavpack-speed-vhigh
fate-wavpack-speed-vhigh: CMD = md5 -i $(SAMPLES)/wavpack/speed_modes/vhigh-partial.wv -f s16le fate-wavpack-speed-vhigh: CMD = md5 -i $(SAMPLES)/wavpack/speed_modes/vhigh-partial.wv -f s16le
# Special Cases # special cases
FATE_WAVPACK += fate-wavpack-cuesheet FATE_WAVPACK += fate-wavpack-cuesheet
fate-wavpack-cuesheet: CMD = md5 -i $(SAMPLES)/wavpack/special/cue_sheet.wv -f s16le fate-wavpack-cuesheet: CMD = md5 -i $(SAMPLES)/wavpack/special/cue_sheet.wv -f s16le
...@@ -86,5 +86,5 @@ fate-wavpack-falsestereo: CMD = md5 -i $(SAMPLES)/wavpack/special/false_stereo.w ...@@ -86,5 +86,5 @@ fate-wavpack-falsestereo: CMD = md5 -i $(SAMPLES)/wavpack/special/false_stereo.w
FATE_WAVPACK += fate-wavpack-matroskamode FATE_WAVPACK += fate-wavpack-matroskamode
fate-wavpack-matroskamode: CMD = md5 -i $(SAMPLES)/wavpack/special/matroska_mode.mka -f s16le fate-wavpack-matroskamode: CMD = md5 -i $(SAMPLES)/wavpack/special/matroska_mode.mka -f s16le
FATE_TESTS += $(FATE_WAVPACK) FATE_AVCONV += $(FATE_WAVPACK)
fate-wavpack: $(FATE_WAVPACK) fate-wavpack: $(FATE_WAVPACK)
...@@ -13,7 +13,7 @@ fate-wmapro-ism: CMD = pcm -i $(SAMPLES)/isom/vc1-wmapro.ism -vn ...@@ -13,7 +13,7 @@ fate-wmapro-ism: CMD = pcm -i $(SAMPLES)/isom/vc1-wmapro.ism -vn
fate-wmapro-ism: CMP = oneoff fate-wmapro-ism: CMP = oneoff
fate-wmapro-ism: REF = $(SAMPLES)/isom/vc1-wmapro.pcm fate-wmapro-ism: REF = $(SAMPLES)/isom/vc1-wmapro.pcm
FATE_TESTS += $(FATE_WMAPRO) FATE_AVCONV += $(FATE_WMAPRO)
fate-wmapro: $(FATE_WMAPRO) fate-wmapro: $(FATE_WMAPRO)
FATE_WMAVOICE += fate-wmavoice-7k FATE_WMAVOICE += fate-wmavoice-7k
...@@ -34,7 +34,7 @@ fate-wmavoice-19k: CMP = stddev ...@@ -34,7 +34,7 @@ fate-wmavoice-19k: CMP = stddev
fate-wmavoice-19k: REF = $(SAMPLES)/wmavoice/streaming_CBR-19K.pcm fate-wmavoice-19k: REF = $(SAMPLES)/wmavoice/streaming_CBR-19K.pcm
fate-wmavoice-19k: FUZZ = 3 fate-wmavoice-19k: FUZZ = 3
FATE_TESTS += $(FATE_WMAVOICE) FATE_AVCONV += $(FATE_WMAVOICE)
fate-wmavoice: $(FATE_WMAVOICE) fate-wmavoice: $(FATE_WMAVOICE)
FATE_WMA_ENCODE += fate-wmav1-encode FATE_WMA_ENCODE += fate-wmav1-encode
...@@ -53,5 +53,5 @@ fate-wmav2-encode: CMP_SHIFT = -8192 ...@@ -53,5 +53,5 @@ fate-wmav2-encode: CMP_SHIFT = -8192
fate-wmav2-encode: CMP_TARGET = 258.32 fate-wmav2-encode: CMP_TARGET = 258.32
fate-wmav2-encode: SIZE_TOLERANCE = 4632 fate-wmav2-encode: SIZE_TOLERANCE = 4632
FATE_TESTS += $(FATE_WMA_ENCODE) FATE_AVCONV += $(FATE_WMA_ENCODE)
fate-wma-encode: $(FATE_WMA_ENCODE) fate-wma-encode: $(FATE_WMA_ENCODE)
#tb 0: 1/22050
0, 0, 0, 1484, 5936, 0x00000000
0, 1484, 1484, 1456, 5824, 0x00000000
0, 2940, 2940, 1484, 5936, 0x00000000
0, 4424, 4424, 1456, 5824, 0x00000000
0, 5880, 5880, 1484, 5936, 0x00000000
0, 7364, 7364, 1456, 5824, 0x00000000
0, 8820, 8820, 1484, 5936, 0x00000000
0, 10304, 10304, 1456, 5824, 0x0f06f5bb
0, 11760, 11760, 1484, 5936, 0xb0dbfc46
0, 13244, 13244, 1456, 5824, 0x9daa9f9c
0, 14700, 14700, 1484, 5936, 0x61400d2f
0, 16184, 16184, 1456, 5824, 0x34a5b0e3
0, 17640, 17640, 1484, 5936, 0x6e546f72
0, 19124, 19124, 1456, 5824, 0x4f093b35
0, 20580, 20580, 1484, 5936, 0x95b5b599
0, 22064, 22064, 1456, 5824, 0x75e15e60
0, 23520, 23520, 1484, 5936, 0xd1077d39
0, 25004, 25004, 1456, 5824, 0x956e21ca
0, 26460, 26460, 1484, 5936, 0x33bac234
0, 27944, 27944, 1456, 5824, 0x5df37824
0, 29400, 29400, 1484, 5936, 0xc174af24
0, 30884, 30884, 1456, 5824, 0xe5dc2159
0, 32340, 32340, 1484, 5936, 0x63ffc8b1
0, 33824, 33824, 1456, 5824, 0xefe4c365
0, 35280, 35280, 1484, 5936, 0x2174304d
#tb 0: 1/22050
0, 0, 0, 1484, 5936, 0xea261a29
0, 1484, 1484, 1456, 5824, 0x253df061
0, 2940, 2940, 1484, 5936, 0x603a5bd7
0, 4424, 4424, 1456, 5824, 0x9d283f59
0, 5880, 5880, 1484, 5936, 0x49323497
0, 7364, 7364, 1456, 5824, 0x7c299939
0, 8820, 8820, 1484, 5936, 0x9f918e9a
0, 10304, 10304, 1456, 5824, 0x1226b534
0, 11760, 11760, 1484, 5936, 0xdd159326
0, 13244, 13244, 1456, 5824, 0x361ad10f
0, 14700, 14700, 1484, 5936, 0x6ccac9e3
0, 16184, 16184, 1456, 5824, 0x1861efef
0, 17640, 17640, 1484, 5936, 0x5f718eb9
0, 19124, 19124, 1456, 5824, 0xd4ca72ba
0, 20580, 20580, 1484, 5936, 0xbf2b27e6
0, 22064, 22064, 1456, 5824, 0xcb6f024e
0, 23520, 23520, 1484, 5936, 0x7dfb7e05
0, 25004, 25004, 1456, 5824, 0x80e16f13
0, 26460, 26460, 1484, 5936, 0x0fb59227
0, 27944, 27944, 1456, 5824, 0x4d6f1fdb
0, 29400, 29400, 1484, 5936, 0x505a5103
0, 30884, 30884, 1456, 5824, 0x47ef4c13
0, 32340, 32340, 1484, 5936, 0xbe4795fb
0, 33824, 33824, 1456, 5824, 0xb82cc4ff
0, 35280, 35280, 1484, 5936, 0xf7c6ab8d
0, 36764, 36764, 1456, 5824, 0x1442f5e0
0, 38220, 38220, 1484, 5936, 0x64659389
0, 39704, 39704, 1456, 5824, 0xdd81725c
0, 41160, 41160, 1484, 5936, 0x7f7c604f
0, 42644, 42644, 1456, 5824, 0xafc77beb
0, 44100, 44100, 1484, 5936, 0x24f88e4d
0, 45584, 45584, 1456, 5824, 0xa31956ca
0, 47040, 47040, 1484, 5936, 0x958e02b9
0, 48524, 48524, 1456, 5824, 0xcfc79890
0, 49980, 49980, 1484, 5936, 0xc7e788ae
0, 51464, 51464, 1456, 5824, 0x4b6b1acc
0, 52920, 52920, 1484, 5936, 0xa74496dc
0, 54404, 54404, 1456, 5824, 0x719e6171
0, 55860, 55860, 1484, 5936, 0x9346222d
0, 57344, 57344, 1456, 5824, 0x9e2a876e
0, 58800, 58800, 1484, 5936, 0xeca6ea64
0, 60284, 60284, 1456, 5824, 0x07d8174f
0, 61740, 61740, 1484, 5936, 0x2df5aa6b
0, 63224, 63224, 1456, 5824, 0x314e7034
0, 64680, 64680, 1484, 5936, 0x5a328768
0, 66164, 66164, 1456, 5824, 0x32b92446
0, 67620, 67620, 1484, 5936, 0x20ecbc9b
0, 69104, 69104, 1456, 5824, 0x76019c14
0, 70560, 70560, 1484, 5936, 0x8c3ef8a6
0, 72044, 72044, 1456, 5824, 0xcdaab50b
0, 73500, 73500, 1484, 5936, 0xb2f87f4f
0, 74984, 74984, 1456, 5824, 0x70c26379
0, 76440, 76440, 1484, 5936, 0x5691ecfd
0, 77924, 77924, 1456, 5824, 0x61e208fe
0, 79380, 79380, 1484, 5936, 0x87d1a5e0
0, 80864, 80864, 1456, 5824, 0x02054cfd
0, 82320, 82320, 1484, 5936, 0x22ff1c4b
0, 83804, 83804, 1456, 5824, 0xc6d87fef
0, 85260, 85260, 1484, 5936, 0x9028bb3b
0, 86744, 86744, 1456, 5824, 0xbadde406
0, 88200, 88200, 1484, 5936, 0x6e88ddf1
0, 89684, 89684, 1456, 5824, 0x5bb8be6e
0, 91140, 91140, 1484, 5936, 0xe1f8d7fc
0, 92624, 92624, 1456, 5824, 0xc824e388
0, 94080, 94080, 1484, 5936, 0x654371a9
0, 95564, 95564, 1456, 5824, 0xae6ee9ec
0, 97020, 97020, 1484, 5936, 0x9aa4550d
0, 98504, 98504, 1456, 5824, 0xdce210ac
0, 99960, 99960, 1484, 5936, 0xb12641c8
0, 101444, 101444, 1456, 5824, 0x277e014b
0, 102900, 102900, 1484, 5936, 0xb0d262de
0, 104384, 104384, 1456, 5824, 0xf94d6f49
0, 105840, 105840, 1484, 5936, 0x3d7848cb
0, 107324, 107324, 1456, 5824, 0xe67fc08e
0, 108780, 108780, 1484, 5936, 0x0475e0d6
0, 110264, 110264, 1456, 5824, 0x8a9a4a2e
0, 111720, 111720, 1484, 5936, 0x82576204
0, 113204, 113204, 1456, 5824, 0x3017b648
0, 114660, 114660, 1484, 5936, 0xca4c3e04
0, 116144, 116144, 1456, 5824, 0x340077d1
0, 117600, 117600, 1484, 5936, 0x805bea6e
0, 119084, 119084, 1456, 5824, 0x2cf6c87b
0, 120540, 120540, 1484, 5936, 0x3635bc5f
0, 122024, 122024, 1456, 5824, 0x0d7a81c7
0, 123480, 123480, 1484, 5936, 0x26179764
0, 124964, 124964, 1456, 5824, 0xa0b2454f
0, 126420, 126420, 1484, 5936, 0x91d24608
0, 127904, 127904, 1456, 5824, 0x6509b3e1
0, 129360, 129360, 1484, 5936, 0xa0e3c9fc
0, 130844, 130844, 1456, 5824, 0x18682a2f
0, 132300, 132300, 1484, 5936, 0x89cea4ff
0, 133784, 133784, 1456, 5824, 0x7dd22b85
0, 135240, 135240, 1484, 5936, 0x8b2eeb8d
0, 136724, 136724, 1456, 5824, 0x0c21af82
0, 138180, 138180, 1484, 5936, 0x9c5a748d
0, 139664, 139664, 1456, 5824, 0x1dc72c5c
0, 141120, 141120, 1484, 5936, 0xe6129383
0, 142604, 142604, 1456, 5824, 0x0a44312a
0, 144060, 144060, 1484, 5936, 0x7ed30640
0, 145544, 145544, 1456, 5824, 0xede15f25
0, 147000, 147000, 1484, 5936, 0x0096d0f3
0, 148484, 148484, 1456, 5824, 0x13764b4b
0, 149940, 149940, 1484, 5936, 0xd4608756
0, 151424, 151424, 1456, 5824, 0x254b5f2a
0, 152880, 152880, 1484, 5936, 0x7705b830
0, 154364, 154364, 1456, 5824, 0x64a63d78
0, 155820, 155820, 1484, 5936, 0xc02d81a6
0, 157304, 157304, 1456, 5824, 0xd239e55e
0, 158760, 158760, 1484, 5936, 0x8018cd3a
0, 160244, 160244, 1456, 5824, 0xf86b8a98
0, 161700, 161700, 1484, 5936, 0x2a0078bc
0, 163184, 163184, 1456, 5824, 0x058d4e1b
0, 164640, 164640, 1484, 5936, 0xbc718309
0, 166124, 166124, 1456, 5824, 0xaf6c29e5
0, 167580, 167580, 1484, 5936, 0x80df004d
0, 169064, 169064, 1456, 5824, 0xeca5aa57
0, 170520, 170520, 1484, 5936, 0xb793a8f8
0, 172004, 172004, 1456, 5824, 0x70fa6aff
0, 173460, 173460, 1484, 5936, 0xda8d4cc6
0, 174944, 174944, 1456, 5824, 0xa70088eb
0, 176400, 176400, 1484, 5936, 0x1c0b0aab
0, 177884, 177884, 1456, 5824, 0x234d2436
0, 179340, 179340, 1484, 5936, 0xf79d731e
0, 180824, 180824, 1456, 5824, 0x5a4e454a
0, 182280, 182280, 1484, 5936, 0xccf6d042
0, 183764, 183764, 1456, 5824, 0x4e524d14
0, 185220, 185220, 1484, 5936, 0xf8f2fcc3
0, 186704, 186704, 1456, 5824, 0x08f12491
0, 188160, 188160, 1484, 5936, 0x506e0a42
0, 189644, 189644, 1456, 5824, 0x7cf05049
0, 191100, 191100, 1484, 5936, 0xdeb9d295
0, 192584, 192584, 1456, 5824, 0x758ef642
0, 194040, 194040, 1484, 5936, 0x91903980
#tb 0: 1/48000
0, 0, 0, 1624, 6496, 0x00000000
0, 1624, 1624, 1596, 6384, 0x00000000
0, 3220, 3220, 1596, 6384, 0x00000000
0, 4816, 4816, 1596, 6384, 0x00000000
0, 6412, 6412, 1596, 6384, 0x00000000
0, 8008, 8008, 1624, 6496, 0xe2034d04
0, 9632, 9632, 1596, 6384, 0x089c9157
0, 11228, 11228, 1596, 6384, 0xeed5743c
0, 12824, 12824, 1596, 6384, 0x71de6b34
0, 14420, 14420, 1596, 6384, 0xc0d67710
0, 16016, 16016, 1624, 6496, 0x35786490
0, 17640, 17640, 1596, 6384, 0xdf1c99a2
0, 19236, 19236, 1596, 6384, 0xca9591ad
0, 20832, 20832, 1596, 6384, 0x6f0d9c3d
0, 22428, 22428, 1596, 6384, 0xfacbbaee
0, 24024, 24024, 1624, 6496, 0x927fb136
0, 25648, 25648, 1596, 6384, 0x9d4f2572
0, 27244, 27244, 1596, 6384, 0x2a3c6d08
0, 28840, 28840, 1596, 6384, 0x4282b1e0
0, 30436, 30436, 1596, 6384, 0xc4a77b9f
0, 32032, 32032, 1624, 6496, 0x2af6a14f
0, 33656, 33656, 1596, 6384, 0x4d734169
0, 35252, 35252, 1596, 6384, 0xb91b5865
0, 36848, 36848, 1596, 6384, 0x9dce2417
0, 38444, 38444, 1596, 6384, 0xb7c4e1ce
0, 40040, 40040, 1624, 6496, 0xef0dc07a
0, 41664, 41664, 1596, 6384, 0x4ad21d10
0, 43260, 43260, 1596, 6384, 0xcfe14682
0, 44856, 44856, 1596, 6384, 0x07be48eb
0, 46452, 46452, 1596, 6384, 0x09de3498
0, 48048, 48048, 1624, 6496, 0xab2e9686
0, 49672, 49672, 1596, 6384, 0x3aba3ccc
0, 51268, 51268, 1596, 6384, 0x0a905ec3
0, 52864, 52864, 1596, 6384, 0x76a93ce4
0, 54460, 54460, 1596, 6384, 0xa99063a4
0, 56056, 56056, 1624, 6496, 0xc16bb88d
0, 57680, 57680, 1596, 6384, 0x650379bf
0, 59276, 59276, 1596, 6384, 0x4e0749fe
0, 60872, 60872, 1596, 6384, 0x778e8d12
0, 62468, 62468, 1596, 6384, 0x9fa8c494
0, 64064, 64064, 1624, 6496, 0x61d5bead
0, 65688, 65688, 1596, 6384, 0x4da9bc3c
0, 67284, 67284, 1596, 6384, 0xa72b6f93
0, 68880, 68880, 1596, 6384, 0x811f5f77
0, 70476, 70476, 1596, 6384, 0x83ea5e3d
0, 72072, 72072, 1624, 6496, 0x78bab460
0, 73696, 73696, 1596, 6384, 0xc9a07432
0, 75292, 75292, 1596, 6384, 0x4b4f2a34
0, 76888, 76888, 1596, 6384, 0x4d707a53
0, 78484, 78484, 1596, 6384, 0x703efb60
0, 80080, 80080, 1624, 6496, 0x319a77bb
0, 81704, 81704, 1596, 6384, 0xbdfd82ec
0, 83300, 83300, 1596, 6384, 0x413c3503
0, 84896, 84896, 1596, 6384, 0xe6e666b3
0, 86492, 86492, 1596, 6384, 0xa09c7342
0, 88088, 88088, 1624, 6496, 0x60cba846
0, 89712, 89712, 1596, 6384, 0x0ba34308
0, 91308, 91308, 1596, 6384, 0xdc3a65f0
0, 92904, 92904, 1596, 6384, 0x1ebf9dc4
0, 94500, 94500, 1596, 6384, 0xbbcb1449
0, 96096, 96096, 1624, 6496, 0x926574eb
0, 97720, 97720, 1596, 6384, 0xb4da92f1
0, 99316, 99316, 1596, 6384, 0xdbbd21e0
0, 100912, 100912, 1596, 6384, 0x08510eff
0, 102508, 102508, 1596, 6384, 0x9534b7ca
0, 104104, 104104, 1624, 6496, 0x50a5ed30
0, 105728, 105728, 1596, 6384, 0xf5ac2f7c
0, 107324, 107324, 1596, 6384, 0x4fe1fa55
0, 108920, 108920, 1596, 6384, 0xd61c4c05
0, 110516, 110516, 1596, 6384, 0x56d11b45
0, 112112, 112112, 1624, 6496, 0x3906084b
0, 113736, 113736, 1596, 6384, 0x1ef31fed
0, 115332, 115332, 1596, 6384, 0x58ed82f5
0, 116928, 116928, 1596, 6384, 0xb31ccd1f
0, 118524, 118524, 1596, 6384, 0xfb648285
0, 120120, 120120, 1624, 6496, 0xfae2950b
0, 121744, 121744, 1596, 6384, 0xe28c8357
0, 123340, 123340, 1596, 6384, 0xda718e60
0, 124936, 124936, 1596, 6384, 0x27516999
0, 126532, 126532, 1596, 6384, 0x0ba07921
0, 128128, 128128, 1624, 6496, 0xcfbecfab
0, 129752, 129752, 1596, 6384, 0xae4cedcd
0, 131348, 131348, 1596, 6384, 0x917b4707
0, 132944, 132944, 1596, 6384, 0x8671b28e
0, 134540, 134540, 1596, 6384, 0x9a1238fa
0, 136136, 136136, 1624, 6496, 0x23b8f8ca
0, 137760, 137760, 1596, 6384, 0x3903bcd6
0, 139356, 139356, 1596, 6384, 0x0532b267
0, 140952, 140952, 1596, 6384, 0xde931220
0, 142548, 142548, 1596, 6384, 0x4ed70a80
0, 144144, 144144, 1624, 6496, 0x4a52d5a1
0, 145768, 145768, 1596, 6384, 0xc1be5760
0, 147364, 147364, 1596, 6384, 0x790d69ba
0, 148960, 148960, 1596, 6384, 0x9d73e6cf
0, 150556, 150556, 1568, 6272, 0xbc0fc725
#tb 0: 1/22050
0, 0, 0, 1468, 5872, 0x00000000
0, 1468, 1468, 1468, 5872, 0x00000000
0, 2936, 2936, 1468, 5872, 0x00000000
0, 4404, 4404, 1468, 5872, 0x00000000
0, 5872, 5872, 1468, 5872, 0x00000000
0, 7340, 7340, 1468, 5872, 0x00000000
0, 8808, 8808, 1468, 5872, 0x00000000
0, 10276, 10276, 1468, 5872, 0x00000000
0, 11744, 11744, 1468, 5872, 0x00000000
0, 13212, 13212, 1468, 5872, 0x00000000
0, 14680, 14680, 1468, 5872, 0x00000000
0, 16148, 16148, 1468, 5872, 0x00000000
0, 17616, 17616, 1468, 5872, 0x00000000
0, 19084, 19084, 1468, 5872, 0x00000000
0, 20552, 20552, 1468, 5872, 0x00000000
0, 22020, 22020, 1468, 5872, 0xc6f64777
0, 23488, 23488, 1468, 5872, 0x7c9e60e8
0, 24956, 24956, 1468, 5872, 0x46525c54
0, 26424, 26424, 1468, 5872, 0x842796bb
0, 27892, 27892, 1468, 5872, 0xb1f6cbd5
0, 29360, 29360, 1468, 5872, 0x0261a74b
0, 30828, 30828, 1468, 5872, 0x8218b1f9
0, 32296, 32296, 1468, 5872, 0xd7a2cae6
0, 33764, 33764, 1468, 5872, 0x69d34562
0, 35232, 35232, 1468, 5872, 0x9303ec65
0, 36700, 36700, 1468, 5872, 0xd5d963a1
0, 38168, 38168, 1468, 5872, 0x0557e06f
0, 39636, 39636, 1468, 5872, 0x1eb48b41
0, 41104, 41104, 1468, 5872, 0x70f5ca3f
0, 42572, 42572, 1468, 5872, 0xd39e5c5e
0, 44040, 44040, 1468, 5872, 0x29c59140
0, 45508, 45508, 1468, 5872, 0x7d95e643
0, 46976, 46976, 1468, 5872, 0x45353fd8
0, 48444, 48444, 1468, 5872, 0xad7b1b27
0, 49912, 49912, 1468, 5872, 0x1f0377b3
0, 51380, 51380, 1468, 5872, 0x6074541e
0, 52848, 52848, 1468, 5872, 0xa4f5e892
0, 54316, 54316, 1468, 5872, 0x084bc696
0, 55784, 55784, 1468, 5872, 0x67fdafce
0, 57252, 57252, 1468, 5872, 0x8dfd249d
0, 58720, 58720, 1468, 5872, 0x514184ee
0, 60188, 60188, 1468, 5872, 0xc0090b0d
0, 61656, 61656, 1468, 5872, 0xc1171cc8
0, 63124, 63124, 1468, 5872, 0x7d7dd07e
0, 64592, 64592, 1468, 5872, 0xe6aa619c
0, 66060, 66060, 1468, 5872, 0xd5aac0df
0, 67528, 67528, 1468, 5872, 0x3b68b390
#tb 0: 1/22050
0, 0, 0, 736, 2944, 0x00000000
0, 736, 736, 1472, 5888, 0x5ae3c2a4
0, 2208, 2208, 1472, 5888, 0x158fbcb4
0, 3680, 3680, 1472, 5888, 0x3fc85d35
0, 5152, 5152, 1472, 5888, 0x4667ec2b
0, 6624, 6624, 1472, 5888, 0x82744494
0, 8096, 8096, 1472, 5888, 0x3b0cb86f
0, 9568, 9568, 1472, 5888, 0x29493fbb
0, 11040, 11040, 1472, 5888, 0xaa2d8595
0, 12512, 12512, 1472, 5888, 0x2e563de6
0, 13984, 13984, 1472, 5888, 0x225cca99
0, 15456, 15456, 1472, 5888, 0x2b577599
0, 16928, 16928, 1472, 5888, 0x3d967f32
0, 18400, 18400, 1472, 5888, 0x16639a84
0, 19872, 19872, 1472, 5888, 0x90549ba0
0, 21344, 21344, 1472, 5888, 0xf46e6644
0, 22816, 22816, 1472, 5888, 0x39a073ec
0, 24288, 24288, 1472, 5888, 0xb1d7a93a
0, 25760, 25760, 1472, 5888, 0x25e9795b
0, 27232, 27232, 1472, 5888, 0xbbc07644
0, 28704, 28704, 1472, 5888, 0x323f6a1b
0, 30176, 30176, 1472, 5888, 0x7cae130b
0, 31648, 31648, 1472, 5888, 0xd23bf9c6
0, 33120, 33120, 1472, 5888, 0x5f73ef35
0, 34592, 34592, 1472, 5888, 0xc66026be
0, 36064, 36064, 1472, 5888, 0xc8fdb539
0, 37536, 37536, 1472, 5888, 0x94c6bfbd
0, 39008, 39008, 1472, 5888, 0xb77e1b83
0, 40480, 40480, 1472, 5888, 0x6c6d6693
0, 41952, 41952, 1472, 5888, 0xd9f064d4
0, 43424, 43424, 1472, 5888, 0x85dd990d
0, 44896, 44896, 1472, 5888, 0x385e021b
0, 46368, 46368, 1472, 5888, 0xac09fd02
0, 47840, 47840, 1472, 5888, 0xc6dcdff2
0, 49312, 49312, 1472, 5888, 0x86a6944d
0, 50784, 50784, 1472, 5888, 0x8587b964
0, 52256, 52256, 1472, 5888, 0x2b0355ff
0, 53728, 53728, 1472, 5888, 0xe4148a85
0, 55200, 55200, 1472, 5888, 0xdf02ed4f
0, 56672, 56672, 1472, 5888, 0x87a54b15
0, 58144, 58144, 1472, 5888, 0x3ad2be45
0, 59616, 59616, 1472, 5888, 0x3a49c2c3
0, 61088, 61088, 1472, 5888, 0xc2b66404
0, 62560, 62560, 1472, 5888, 0xac3e234a
0, 64032, 64032, 1472, 5888, 0x5dcf523b
0, 65504, 65504, 1472, 5888, 0x2034b5d6
0, 66976, 66976, 1472, 5888, 0x96882832
0, 68448, 68448, 1472, 5888, 0x2be3d534
0, 69920, 69920, 1472, 5888, 0xa841a49d
This diff is collapsed.
This diff is collapsed.
#tb 0: 1/15 #tb 0: 1/15
#tb 1: 1/22050
0, 0, 0, 1, 230400, 0xfbf2581e 0, 0, 0, 1, 230400, 0xfbf2581e
1, 0, 0, 1468, 5872, 0x00000000
1, 1468, 1468, 1468, 5872, 0x00000000
0, 1, 1, 1, 230400, 0xfbf2581e 0, 1, 1, 1, 230400, 0xfbf2581e
1, 2936, 2936, 1468, 5872, 0x00000000
0, 2, 2, 1, 230400, 0xfbf2581e 0, 2, 2, 1, 230400, 0xfbf2581e
1, 4404, 4404, 1468, 5872, 0x00000000
0, 3, 3, 1, 230400, 0xfbf2581e 0, 3, 3, 1, 230400, 0xfbf2581e
1, 5872, 5872, 1468, 5872, 0x00000000
0, 4, 4, 1, 230400, 0xfbf2581e 0, 4, 4, 1, 230400, 0xfbf2581e
1, 7340, 7340, 1468, 5872, 0x00000000
0, 5, 5, 1, 230400, 0xfbf2581e 0, 5, 5, 1, 230400, 0xfbf2581e
1, 8808, 8808, 1468, 5872, 0x00000000
0, 6, 6, 1, 230400, 0xfbf2581e 0, 6, 6, 1, 230400, 0xfbf2581e
1, 10276, 10276, 1468, 5872, 0x00000000
0, 7, 7, 1, 230400, 0xfbf2581e 0, 7, 7, 1, 230400, 0xfbf2581e
1, 11744, 11744, 1468, 5872, 0x00000000
0, 8, 8, 1, 230400, 0xfbf2581e 0, 8, 8, 1, 230400, 0xfbf2581e
1, 13212, 13212, 1468, 5872, 0x00000000
0, 9, 9, 1, 230400, 0xfbf2581e 0, 9, 9, 1, 230400, 0xfbf2581e
1, 14680, 14680, 1468, 5872, 0x00000000
0, 10, 10, 1, 230400, 0xfbf2581e 0, 10, 10, 1, 230400, 0xfbf2581e
1, 16148, 16148, 1468, 5872, 0x00000000
0, 11, 11, 1, 230400, 0xfbf2581e 0, 11, 11, 1, 230400, 0xfbf2581e
1, 17616, 17616, 1468, 5872, 0x00000000
0, 12, 12, 1, 230400, 0xfbf2581e 0, 12, 12, 1, 230400, 0xfbf2581e
1, 19084, 19084, 1468, 5872, 0x00000000
0, 13, 13, 1, 230400, 0xfbf2581e 0, 13, 13, 1, 230400, 0xfbf2581e
1, 20552, 20552, 1468, 5872, 0x00000000
0, 14, 14, 1, 230400, 0xfbf2581e 0, 14, 14, 1, 230400, 0xfbf2581e
1, 22020, 22020, 1468, 5872, 0xc6f64777
0, 15, 15, 1, 230400, 0xf5a0a21d 0, 15, 15, 1, 230400, 0xf5a0a21d
1, 23488, 23488, 1468, 5872, 0x7c9e60e8
0, 16, 16, 1, 230400, 0x909cc039 0, 16, 16, 1, 230400, 0x909cc039
1, 24956, 24956, 1468, 5872, 0x46525c54
0, 17, 17, 1, 230400, 0x14d899dd 0, 17, 17, 1, 230400, 0x14d899dd
1, 26424, 26424, 1468, 5872, 0x842796bb
0, 18, 18, 1, 230400, 0x0d246edf 0, 18, 18, 1, 230400, 0x0d246edf
1, 27892, 27892, 1468, 5872, 0xb1f6cbd5
0, 19, 19, 1, 230400, 0x5345fe0d 0, 19, 19, 1, 230400, 0x5345fe0d
1, 29360, 29360, 1468, 5872, 0x0261a74b
0, 20, 20, 1, 230400, 0x5abdff9a 0, 20, 20, 1, 230400, 0x5abdff9a
1, 30828, 30828, 1468, 5872, 0x8218b1f9
0, 21, 21, 1, 230400, 0x1730d973 0, 21, 21, 1, 230400, 0x1730d973
1, 32296, 32296, 1468, 5872, 0xd7a2cae6
0, 22, 22, 1, 230400, 0xec881be9 0, 22, 22, 1, 230400, 0xec881be9
1, 33764, 33764, 1468, 5872, 0x69d34562
0, 23, 23, 1, 230400, 0xf4216895 0, 23, 23, 1, 230400, 0xf4216895
1, 35232, 35232, 1468, 5872, 0x9303ec65
0, 24, 24, 1, 230400, 0x529d7a52 0, 24, 24, 1, 230400, 0x529d7a52
1, 36700, 36700, 1468, 5872, 0xd5d963a1
0, 25, 25, 1, 230400, 0x93b4c7b9 0, 25, 25, 1, 230400, 0x93b4c7b9
1, 38168, 38168, 1468, 5872, 0x0557e06f
0, 26, 26, 1, 230400, 0xedc65bcd 0, 26, 26, 1, 230400, 0xedc65bcd
1, 39636, 39636, 1468, 5872, 0x1eb48b41
0, 27, 27, 1, 230400, 0xf0fb54ae 0, 27, 27, 1, 230400, 0xf0fb54ae
1, 41104, 41104, 1468, 5872, 0x70f5ca3f
0, 28, 28, 1, 230400, 0x27864ce9 0, 28, 28, 1, 230400, 0x27864ce9
1, 42572, 42572, 1468, 5872, 0xd39e5c5e
0, 29, 29, 1, 230400, 0xcd05012d 0, 29, 29, 1, 230400, 0xcd05012d
1, 44040, 44040, 1468, 5872, 0x29c59140
0, 30, 30, 1, 230400, 0x019b6d84 0, 30, 30, 1, 230400, 0x019b6d84
1, 45508, 45508, 1468, 5872, 0x7d95e643
0, 31, 31, 1, 230400, 0xcc05d416 0, 31, 31, 1, 230400, 0xcc05d416
1, 46976, 46976, 1468, 5872, 0x45353fd8
0, 32, 32, 1, 230400, 0xb04c0248 0, 32, 32, 1, 230400, 0xb04c0248
1, 48444, 48444, 1468, 5872, 0xad7b1b27
0, 33, 33, 1, 230400, 0x6806eb92 0, 33, 33, 1, 230400, 0x6806eb92
1, 49912, 49912, 1468, 5872, 0x1f0377b3
0, 34, 34, 1, 230400, 0x60e9c001 0, 34, 34, 1, 230400, 0x60e9c001
1, 51380, 51380, 1468, 5872, 0x6074541e
0, 35, 35, 1, 230400, 0x9b040261 0, 35, 35, 1, 230400, 0x9b040261
1, 52848, 52848, 1468, 5872, 0xa4f5e892
0, 36, 36, 1, 230400, 0x6961fb90 0, 36, 36, 1, 230400, 0x6961fb90
1, 54316, 54316, 1468, 5872, 0x084bc696
0, 37, 37, 1, 230400, 0xbf67ad24 0, 37, 37, 1, 230400, 0xbf67ad24
1, 55784, 55784, 1468, 5872, 0x67fdafce
0, 38, 38, 1, 230400, 0x2270f328 0, 38, 38, 1, 230400, 0x2270f328
1, 57252, 57252, 1468, 5872, 0x8dfd249d
0, 39, 39, 1, 230400, 0xd0c345f6 0, 39, 39, 1, 230400, 0xd0c345f6
1, 58720, 58720, 1468, 5872, 0x514184ee
0, 40, 40, 1, 230400, 0xfd159212 0, 40, 40, 1, 230400, 0xfd159212
1, 60188, 60188, 1468, 5872, 0xc0090b0d
0, 41, 41, 1, 230400, 0x085578ff 0, 41, 41, 1, 230400, 0x085578ff
1, 61656, 61656, 1468, 5872, 0xc1171cc8
0, 42, 42, 1, 230400, 0xcca8afa6 0, 42, 42, 1, 230400, 0xcca8afa6
1, 63124, 63124, 1468, 5872, 0x7d7dd07e
0, 43, 43, 1, 230400, 0x901ec91c 0, 43, 43, 1, 230400, 0x901ec91c
1, 64592, 64592, 1468, 5872, 0xe6aa619c
0, 44, 44, 1, 230400, 0xf1cb99f3 0, 44, 44, 1, 230400, 0xf1cb99f3
1, 66060, 66060, 1468, 5872, 0xd5aac0df
0, 45, 45, 1, 230400, 0x86d98f0c 0, 45, 45, 1, 230400, 0x86d98f0c
1, 67528, 67528, 1468, 5872, 0x3b68b390
0, 46, 46, 1, 230400, 0x52970700 0, 46, 46, 1, 230400, 0x52970700
#tb 0: 1/15 #tb 0: 1/15
#tb 1: 1/22050
0, 0, 0, 1, 192000, 0xdfc2f225 0, 0, 0, 1, 192000, 0xdfc2f225
1, 0, 0, 736, 2944, 0x00000000
1, 736, 736, 1472, 5888, 0x5ae3c2a4
0, 1, 1, 1, 192000, 0x059b57bd 0, 1, 1, 1, 192000, 0x059b57bd
1, 2208, 2208, 1472, 5888, 0x158fbcb4
0, 2, 2, 1, 192000, 0x766cb086 0, 2, 2, 1, 192000, 0x766cb086
1, 3680, 3680, 1472, 5888, 0x3fc85d35
0, 3, 3, 1, 192000, 0x459e3bac 0, 3, 3, 1, 192000, 0x459e3bac
1, 5152, 5152, 1472, 5888, 0x4667ec2b
0, 4, 4, 1, 192000, 0x5293e622 0, 4, 4, 1, 192000, 0x5293e622
1, 6624, 6624, 1472, 5888, 0x82744494
0, 5, 5, 1, 192000, 0x898b03f4 0, 5, 5, 1, 192000, 0x898b03f4
1, 8096, 8096, 1472, 5888, 0x3b0cb86f
0, 6, 6, 1, 192000, 0xb184a627 0, 6, 6, 1, 192000, 0xb184a627
1, 9568, 9568, 1472, 5888, 0x29493fbb
0, 7, 7, 1, 192000, 0xa3fc650a 0, 7, 7, 1, 192000, 0xa3fc650a
1, 11040, 11040, 1472, 5888, 0xaa2d8595
0, 8, 8, 1, 192000, 0xea448589 0, 8, 8, 1, 192000, 0xea448589
1, 12512, 12512, 1472, 5888, 0x2e563de6
0, 9, 9, 1, 192000, 0x700e2b76 0, 9, 9, 1, 192000, 0x700e2b76
1, 13984, 13984, 1472, 5888, 0x225cca99
0, 10, 10, 1, 192000, 0xa1a1d66d 0, 10, 10, 1, 192000, 0xa1a1d66d
1, 15456, 15456, 1472, 5888, 0x2b577599
0, 11, 11, 1, 192000, 0xd63bc8a1 0, 11, 11, 1, 192000, 0xd63bc8a1
1, 16928, 16928, 1472, 5888, 0x3d967f32
0, 12, 12, 1, 192000, 0x5f08c023 0, 12, 12, 1, 192000, 0x5f08c023
1, 18400, 18400, 1472, 5888, 0x16639a84
0, 13, 13, 1, 192000, 0x8b75ec3b 0, 13, 13, 1, 192000, 0x8b75ec3b
1, 19872, 19872, 1472, 5888, 0x90549ba0
0, 14, 14, 1, 192000, 0x62728ce4 0, 14, 14, 1, 192000, 0x62728ce4
1, 21344, 21344, 1472, 5888, 0xf46e6644
0, 15, 15, 1, 192000, 0xaa007941 0, 15, 15, 1, 192000, 0xaa007941
1, 22816, 22816, 1472, 5888, 0x39a073ec
0, 16, 16, 1, 192000, 0x55dc5b3b 0, 16, 16, 1, 192000, 0x55dc5b3b
1, 24288, 24288, 1472, 5888, 0xb1d7a93a
0, 17, 17, 1, 192000, 0x72d836c2 0, 17, 17, 1, 192000, 0x72d836c2
1, 25760, 25760, 1472, 5888, 0x25e9795b
0, 18, 18, 1, 192000, 0x1f2de2fc 0, 18, 18, 1, 192000, 0x1f2de2fc
1, 27232, 27232, 1472, 5888, 0xbbc07644
0, 19, 19, 1, 192000, 0xb295dfdb 0, 19, 19, 1, 192000, 0xb295dfdb
1, 28704, 28704, 1472, 5888, 0x323f6a1b
0, 20, 20, 1, 192000, 0xe5c5f634 0, 20, 20, 1, 192000, 0xe5c5f634
1, 30176, 30176, 1472, 5888, 0x7cae130b
0, 21, 21, 1, 192000, 0x455a0464 0, 21, 21, 1, 192000, 0x455a0464
1, 31648, 31648, 1472, 5888, 0xd23bf9c6
0, 22, 22, 1, 192000, 0x3bf2340d 0, 22, 22, 1, 192000, 0x3bf2340d
1, 33120, 33120, 1472, 5888, 0x5f73ef35
0, 23, 23, 1, 192000, 0xe368f0fc 0, 23, 23, 1, 192000, 0xe368f0fc
1, 34592, 34592, 1472, 5888, 0xc66026be
0, 24, 24, 1, 192000, 0xfa7549c0 0, 24, 24, 1, 192000, 0xfa7549c0
1, 36064, 36064, 1472, 5888, 0xc8fdb539
0, 25, 25, 1, 192000, 0x4dd76f3d 0, 25, 25, 1, 192000, 0x4dd76f3d
1, 37536, 37536, 1472, 5888, 0x94c6bfbd
0, 26, 26, 1, 192000, 0x50a49f6c 0, 26, 26, 1, 192000, 0x50a49f6c
1, 39008, 39008, 1472, 5888, 0xb77e1b83
0, 27, 27, 1, 192000, 0xb6072f65 0, 27, 27, 1, 192000, 0xb6072f65
1, 40480, 40480, 1472, 5888, 0x6c6d6693
0, 28, 28, 1, 192000, 0x093ce1a8 0, 28, 28, 1, 192000, 0x093ce1a8
1, 41952, 41952, 1472, 5888, 0xd9f064d4
0, 29, 29, 1, 192000, 0x55afe3db 0, 29, 29, 1, 192000, 0x55afe3db
1, 43424, 43424, 1472, 5888, 0x85dd990d
0, 30, 30, 1, 192000, 0x81c3bfab 0, 30, 30, 1, 192000, 0x81c3bfab
1, 44896, 44896, 1472, 5888, 0x385e021b
0, 31, 31, 1, 192000, 0x583ebd3d 0, 31, 31, 1, 192000, 0x583ebd3d
1, 46368, 46368, 1472, 5888, 0xac09fd02
0, 32, 32, 1, 192000, 0x2504f003 0, 32, 32, 1, 192000, 0x2504f003
1, 47840, 47840, 1472, 5888, 0xc6dcdff2
0, 33, 33, 1, 192000, 0x44ade2af 0, 33, 33, 1, 192000, 0x44ade2af
1, 49312, 49312, 1472, 5888, 0x86a6944d
0, 34, 34, 1, 192000, 0x77cbcfd8 0, 34, 34, 1, 192000, 0x77cbcfd8
1, 50784, 50784, 1472, 5888, 0x8587b964
0, 35, 35, 1, 192000, 0xac7ddfa1 0, 35, 35, 1, 192000, 0xac7ddfa1
1, 52256, 52256, 1472, 5888, 0x2b0355ff
0, 36, 36, 1, 192000, 0x79f7cfe8 0, 36, 36, 1, 192000, 0x79f7cfe8
1, 53728, 53728, 1472, 5888, 0xe4148a85
0, 37, 37, 1, 192000, 0xdf2898fd 0, 37, 37, 1, 192000, 0xdf2898fd
1, 55200, 55200, 1472, 5888, 0xdf02ed4f
1, 56672, 56672, 1472, 5888, 0x87a54b15
1, 58144, 58144, 1472, 5888, 0x3ad2be45
1, 59616, 59616, 1472, 5888, 0x3a49c2c3
1, 61088, 61088, 1472, 5888, 0xc2b66404
1, 62560, 62560, 1472, 5888, 0xac3e234a
1, 64032, 64032, 1472, 5888, 0x5dcf523b
1, 65504, 65504, 1472, 5888, 0x2034b5d6
1, 66976, 66976, 1472, 5888, 0x96882832
1, 68448, 68448, 1472, 5888, 0x2be3d534
1, 69920, 69920, 1472, 5888, 0xa841a49d
#tb 0: 1/15 #tb 0: 1/15
#tb 1: 1/22050
0, 0, 0, 1, 115200, 0x375ec573 0, 0, 0, 1, 115200, 0x375ec573
1, 0, 0, 1484, 5936, 0x00000000
0, 1, 1, 1, 115200, 0x375ec573 0, 1, 1, 1, 115200, 0x375ec573
1, 1484, 1484, 1456, 5824, 0x00000000
0, 2, 2, 1, 115200, 0x375ec573 0, 2, 2, 1, 115200, 0x375ec573
1, 2940, 2940, 1484, 5936, 0x00000000
0, 3, 3, 1, 115200, 0x375ec573 0, 3, 3, 1, 115200, 0x375ec573
1, 4424, 4424, 1456, 5824, 0x00000000
0, 4, 4, 1, 115200, 0x375ec573 0, 4, 4, 1, 115200, 0x375ec573
1, 5880, 5880, 1484, 5936, 0x00000000
0, 5, 5, 1, 115200, 0x375ec573 0, 5, 5, 1, 115200, 0x375ec573
1, 7364, 7364, 1456, 5824, 0x00000000
0, 6, 6, 1, 115200, 0x375ec573 0, 6, 6, 1, 115200, 0x375ec573
1, 8820, 8820, 1484, 5936, 0x00000000
0, 7, 7, 1, 115200, 0x375ec573 0, 7, 7, 1, 115200, 0x375ec573
1, 10304, 10304, 1456, 5824, 0x0f06f5bb
0, 8, 8, 1, 115200, 0x0b4d31bf 0, 8, 8, 1, 115200, 0x0b4d31bf
1, 11760, 11760, 1484, 5936, 0xb0dbfc46
0, 9, 9, 1, 115200, 0xdd724598 0, 9, 9, 1, 115200, 0xdd724598
1, 13244, 13244, 1456, 5824, 0x9daa9f9c
0, 10, 10, 1, 115200, 0xc3077e75 0, 10, 10, 1, 115200, 0xc3077e75
1, 14700, 14700, 1484, 5936, 0x61400d2f
0, 11, 11, 1, 115200, 0xbf70778a 0, 11, 11, 1, 115200, 0xbf70778a
1, 16184, 16184, 1456, 5824, 0x34a5b0e3
0, 12, 12, 1, 115200, 0x117eb766 0, 12, 12, 1, 115200, 0x117eb766
1, 17640, 17640, 1484, 5936, 0x6e546f72
0, 13, 13, 1, 115200, 0x4617fbad 0, 13, 13, 1, 115200, 0x4617fbad
1, 19124, 19124, 1456, 5824, 0x4f093b35
0, 14, 14, 1, 115200, 0x5f5b02d2 0, 14, 14, 1, 115200, 0x5f5b02d2
1, 20580, 20580, 1484, 5936, 0x95b5b599
0, 15, 15, 1, 115200, 0x2a9c5325 0, 15, 15, 1, 115200, 0x2a9c5325
1, 22064, 22064, 1456, 5824, 0x75e15e60
0, 16, 16, 1, 115200, 0x14a89e2a 0, 16, 16, 1, 115200, 0x14a89e2a
1, 23520, 23520, 1484, 5936, 0xd1077d39
0, 17, 17, 1, 115200, 0xe69aa994 0, 17, 17, 1, 115200, 0xe69aa994
1, 25004, 25004, 1456, 5824, 0x956e21ca
0, 18, 18, 1, 115200, 0xfbacf589 0, 18, 18, 1, 115200, 0xfbacf589
1, 26460, 26460, 1484, 5936, 0x33bac234
0, 19, 19, 1, 115200, 0x1d714c6e 0, 19, 19, 1, 115200, 0x1d714c6e
1, 27944, 27944, 1456, 5824, 0x5df37824
0, 20, 20, 1, 115200, 0x6eff66cb 0, 20, 20, 1, 115200, 0x6eff66cb
1, 29400, 29400, 1484, 5936, 0xc174af24
0, 21, 21, 1, 115200, 0xee21c1cb 0, 21, 21, 1, 115200, 0xee21c1cb
1, 30884, 30884, 1456, 5824, 0xe5dc2159
0, 22, 22, 1, 115200, 0xce714ada 0, 22, 22, 1, 115200, 0xce714ada
1, 32340, 32340, 1484, 5936, 0x63ffc8b1
0, 23, 23, 1, 115200, 0xf89d56c3 0, 23, 23, 1, 115200, 0xf89d56c3
1, 33824, 33824, 1456, 5824, 0xefe4c365
0, 24, 24, 1, 115200, 0x65fd5e60 0, 24, 24, 1, 115200, 0x65fd5e60
0, 25, 25, 1, 115200, 0x0c256424 0, 25, 25, 1, 115200, 0x0c256424
This diff is collapsed.
#tb 0: 524288/15712911
0, 0, 0, 1, 291840, 0xbd7e0b22
0, 1, 1, 1, 291840, 0xf6e12ca5
0, 2, 2, 1, 291840, 0x528c7049
0, 3, 3, 1, 291840, 0x93055de9
0, 4, 4, 1, 291840, 0xf95a51c1
0, 5, 5, 1, 291840, 0x6ad3a65a
0, 6, 6, 1, 291840, 0x494684a7
0, 7, 7, 1, 291840, 0x74c14eb1
0, 8, 8, 1, 291840, 0x149fcb7e
0, 9, 9, 1, 291840, 0x25649761
0, 10, 10, 1, 291840, 0xbc3f9052
0, 11, 11, 1, 291840, 0x080edfff
0, 12, 12, 1, 291840, 0x6d7ad684
0, 13, 13, 1, 291840, 0x6d53844d
0, 14, 14, 1, 291840, 0xf7ad5385
0, 15, 15, 1, 291840, 0x0241b56a
0, 16, 16, 1, 291840, 0x120122c8
0, 17, 17, 1, 291840, 0x31b0f32a
0, 18, 18, 1, 291840, 0x14068b98
0, 19, 19, 1, 291840, 0xeeec658b
0, 20, 20, 1, 291840, 0x9376374c
0, 21, 21, 1, 291840, 0x091e8c6e
0, 22, 22, 1, 291840, 0x744ad07f
0, 23, 23, 1, 291840, 0xf99c554e
0, 24, 24, 1, 291840, 0xc84bd677
0, 25, 25, 1, 291840, 0x3898d474
0, 26, 26, 1, 291840, 0x1e2910c8
0, 27, 27, 1, 291840, 0xb11f58bc
0, 28, 28, 1, 291840, 0xf89170ee
0, 29, 29, 1, 291840, 0x8f239dc3
0, 30, 30, 1, 291840, 0x8538c76c
0, 31, 31, 1, 291840, 0x162ee66f
0, 32, 32, 1, 291840, 0x5f8708a5
0, 33, 33, 1, 291840, 0x95802dfb
0, 34, 34, 1, 291840, 0xc424630d
0, 35, 35, 1, 291840, 0xfb8a8667
0, 36, 36, 1, 291840, 0xbad79af5
0, 37, 37, 1, 291840, 0xc733b325
0, 38, 38, 1, 291840, 0x4bfbcd70
0, 39, 39, 1, 291840, 0x502cd950
0, 40, 40, 1, 291840, 0x8461ca2c
0, 41, 41, 1, 291840, 0x00219b0d
0, 42, 42, 1, 291840, 0xa4de45e1
0, 43, 43, 1, 291840, 0xacd3f4df
0, 44, 44, 1, 291840, 0x2203a369
0, 45, 45, 1, 291840, 0x0a66effa
0, 46, 46, 1, 291840, 0x7ac1fd91
0, 47, 47, 1, 291840, 0x84970aa7
0, 48, 48, 1, 291840, 0x569d145f
0, 49, 49, 1, 291840, 0xe51efe1b
0, 50, 50, 1, 291840, 0x38e2cd78
0, 51, 51, 1, 291840, 0x93428ea2
0, 52, 52, 1, 291840, 0x3d3f5b17
0, 53, 53, 1, 291840, 0x9546127d
0, 54, 54, 1, 291840, 0x4178be54
0, 55, 55, 1, 291840, 0x0d0f8036
0, 56, 56, 1, 291840, 0xc20557b9
0, 57, 57, 1, 291840, 0x6d4b2d64
0, 58, 58, 1, 291840, 0xa750125d
0, 59, 59, 1, 291840, 0x04623ce3
0, 60, 60, 1, 291840, 0xc7f2bbc7
0, 61, 61, 1, 291840, 0x6e271336
0, 62, 62, 1, 291840, 0xcfbd4246
0, 63, 63, 1, 291840, 0xe1493be9
0, 64, 64, 1, 291840, 0x6c731194
0, 65, 65, 1, 291840, 0x0fc30cc2
0, 66, 66, 1, 291840, 0x967427f3
0, 67, 67, 1, 291840, 0x55ae3b00
0, 68, 68, 1, 291840, 0xbe4f200c
0, 69, 69, 1, 291840, 0xc515e443
0, 70, 70, 1, 291840, 0xd738bd69
0, 71, 71, 1, 291840, 0xa8e0ab69
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment