Merge remote-tracking branch 'qatar/master'

* qatar/master:
  avconv: make -frames work for all types of streams, not just video.
  bfi: K&R cosmetics
  bgmc: K&R cleanup
  rawdec: Set start_time to 0 for raw audio files.
  Detect 'yuv2' as rawvideo also in avi.
  rawdec: propagate pict_type information to the output frame
  rawdec: Support more QT 1bpp rawvideo files.
  avconv: free bitstream filters
  threads: limit the number of automatic threads to MAX_AUTO_THREADS
  avplay: K&R cleanup
  fate: use rgb24 as output format for dfa tests
  threads: set thread_count to 1 when thread support is disabled
  threads: introduce CODEC_CAP_AUTO_THREADS and add it to libx264

Conflicts:
	ffplay.c
	libavcodec/avcodec.h
	libavcodec/pthread.c
	libavcodec/version.h
	tests/ref/fate/dfa1
	tests/ref/fate/dfa10
	tests/ref/fate/dfa11
	tests/ref/fate/dfa2
	tests/ref/fate/dfa3
	tests/ref/fate/dfa4
	tests/ref/fate/dfa5
	tests/ref/fate/dfa6
	tests/ref/fate/dfa7
	tests/ref/fate/dfa8
	tests/ref/fate/dfa9

Merged-by: Michael Niedermayer <michaelni@gmx.at>
pull/3/head
Michael Niedermayer 13 years ago
commit 4121148388
  1. 30
      avconv.c
  2. 30
      ffmpeg.c
  3. 444
      ffplay.c
  4. 4
      libavcodec/avcodec.h
  5. 19
      libavcodec/bfi.c
  6. 4
      libavcodec/bgmc.c
  7. 2
      libavcodec/libx264.c
  8. 17
      libavcodec/pthread.c
  9. 2
      libavcodec/utils.c
  10. 2
      libavcodec/version.h
  11. 22
      tests/fate/dfa.mak
  12. 50
      tests/ref/fate/dfa1
  13. 16
      tests/ref/fate/dfa10
  14. 18
      tests/ref/fate/dfa11
  15. 34
      tests/ref/fate/dfa2
  16. 20
      tests/ref/fate/dfa3
  17. 26
      tests/ref/fate/dfa4
  18. 30
      tests/ref/fate/dfa5
  19. 24
      tests/ref/fate/dfa6
  20. 24
      tests/ref/fate/dfa7
  21. 72
      tests/ref/fate/dfa8
  22. 12
      tests/ref/fate/dfa9

@ -754,6 +754,15 @@ void exit_program(int ret)
avformat_free_context(s);
av_dict_free(&output_files[i].opts);
}
for (i = 0; i < nb_output_streams; i++) {
AVBitStreamFilterContext *bsfc = output_streams[i].bitstream_filters;
while (bsfc) {
AVBitStreamFilterContext *next = bsfc->next;
av_bitstream_filter_close(bsfc);
bsfc = next;
}
output_streams[i].bitstream_filters = NULL;
}
for (i = 0; i < nb_input_files; i++) {
avformat_close_input(&input_files[i].ctx);
}
@ -896,8 +905,10 @@ get_sync_ipts(const OutputStream *ost)
return (double)(ist->pts - of->start_time) / AV_TIME_BASE;
}
static void write_frame(AVFormatContext *s, AVPacket *pkt, AVCodecContext *avctx, AVBitStreamFilterContext *bsfc)
static void write_frame(AVFormatContext *s, AVPacket *pkt, OutputStream *ost)
{
AVBitStreamFilterContext *bsfc = ost->bitstream_filters;
AVCodecContext *avctx = ost->st->codec;
int ret;
while (bsfc) {
@ -927,6 +938,7 @@ static void write_frame(AVFormatContext *s, AVPacket *pkt, AVCodecContext *avctx
print_error("av_interleaved_write_frame()", ret);
exit_program(1);
}
ost->frame_number++;
}
static void generate_silence(uint8_t* buf, enum AVSampleFormat sample_fmt, size_t size)
@ -1141,7 +1153,7 @@ need_realloc:
if (enc->coded_frame && enc->coded_frame->pts != AV_NOPTS_VALUE)
pkt.pts = av_rescale_q(enc->coded_frame->pts, enc->time_base, ost->st->time_base);
pkt.flags |= AV_PKT_FLAG_KEY;
write_frame(s, &pkt, enc, ost->bitstream_filters);
write_frame(s, &pkt, ost);
ost->sync_opts += enc->frame_size;
}
@ -1176,7 +1188,7 @@ need_realloc:
if (enc->coded_frame && enc->coded_frame->pts != AV_NOPTS_VALUE)
pkt.pts = av_rescale_q(enc->coded_frame->pts, enc->time_base, ost->st->time_base);
pkt.flags |= AV_PKT_FLAG_KEY;
write_frame(s, &pkt, enc, ost->bitstream_filters);
write_frame(s, &pkt, ost);
}
}
@ -1278,7 +1290,7 @@ static void do_subtitle_out(AVFormatContext *s,
else
pkt.pts += 90 * sub->end_display_time;
}
write_frame(s, &pkt, ost->st->codec, ost->bitstream_filters);
write_frame(s, &pkt, ost);
}
}
@ -1429,7 +1441,7 @@ static void do_video_out(AVFormatContext *s,
pkt.pts = av_rescale_q(ost->sync_opts, enc->time_base, ost->st->time_base);
pkt.flags |= AV_PKT_FLAG_KEY;
write_frame(s, &pkt, ost->st->codec, ost->bitstream_filters);
write_frame(s, &pkt, ost);
} else {
AVFrame big_picture;
@ -1477,7 +1489,7 @@ static void do_video_out(AVFormatContext *s,
if (enc->coded_frame->key_frame)
pkt.flags |= AV_PKT_FLAG_KEY;
write_frame(s, &pkt, ost->st->codec, ost->bitstream_filters);
write_frame(s, &pkt, ost);
*frame_size = ret;
video_size += ret;
// fprintf(stderr,"\nFrame: %3d size: %5d type: %d",
@ -1489,7 +1501,6 @@ static void do_video_out(AVFormatContext *s,
}
}
ost->sync_opts++;
ost->frame_number++;
}
}
@ -1747,7 +1758,7 @@ static void flush_encoders(OutputStream *ost_table, int nb_ostreams)
pkt.size = ret;
if (enc->coded_frame && enc->coded_frame->pts != AV_NOPTS_VALUE)
pkt.pts = av_rescale_q(enc->coded_frame->pts, enc->time_base, ost->st->time_base);
write_frame(os, &pkt, ost->st->codec, ost->bitstream_filters);
write_frame(os, &pkt, ost);
}
}
}
@ -1831,9 +1842,8 @@ static void do_streamcopy(InputStream *ist, OutputStream *ost, const AVPacket *p
opkt.flags |= AV_PKT_FLAG_KEY;
}
write_frame(of->ctx, &opkt, ost->st->codec, ost->bitstream_filters);
write_frame(of->ctx, &opkt, ost);
ost->st->codec->frame_number++;
ost->frame_number++;
av_free_packet(&opkt);
}

@ -812,6 +812,15 @@ void av_noreturn exit_program(int ret)
avformat_free_context(s);
av_dict_free(&output_files[i].opts);
}
for (i = 0; i < nb_output_streams; i++) {
AVBitStreamFilterContext *bsfc = output_streams[i].bitstream_filters;
while (bsfc) {
AVBitStreamFilterContext *next = bsfc->next;
av_bitstream_filter_close(bsfc);
bsfc = next;
}
output_streams[i].bitstream_filters = NULL;
}
for (i = 0; i < nb_input_files; i++) {
avformat_close_input(&input_files[i].ctx);
}
@ -958,8 +967,10 @@ static double get_sync_ipts(const OutputStream *ost)
return (double)(ist->pts - of->start_time) / AV_TIME_BASE;
}
static void write_frame(AVFormatContext *s, AVPacket *pkt, AVCodecContext *avctx, AVBitStreamFilterContext *bsfc)
static void write_frame(AVFormatContext *s, AVPacket *pkt, OutputStream *ost)
{
AVBitStreamFilterContext *bsfc = ost->bitstream_filters;
AVCodecContext *avctx = ost->st->codec;
int ret;
while (bsfc) {
@ -989,6 +1000,7 @@ static void write_frame(AVFormatContext *s, AVPacket *pkt, AVCodecContext *avctx
print_error("av_interleaved_write_frame()", ret);
exit_program(1);
}
ost->frame_number++;
}
static void generate_silence(uint8_t* buf, enum AVSampleFormat sample_fmt, size_t size)
@ -1188,7 +1200,7 @@ need_realloc:
if (enc->coded_frame && enc->coded_frame->pts != AV_NOPTS_VALUE)
pkt.pts = av_rescale_q(enc->coded_frame->pts, enc->time_base, ost->st->time_base);
pkt.flags |= AV_PKT_FLAG_KEY;
write_frame(s, &pkt, enc, ost->bitstream_filters);
write_frame(s, &pkt, ost);
ost->sync_opts += enc->frame_size;
}
@ -1223,7 +1235,7 @@ need_realloc:
if (enc->coded_frame && enc->coded_frame->pts != AV_NOPTS_VALUE)
pkt.pts = av_rescale_q(enc->coded_frame->pts, enc->time_base, ost->st->time_base);
pkt.flags |= AV_PKT_FLAG_KEY;
write_frame(s, &pkt, enc, ost->bitstream_filters);
write_frame(s, &pkt, ost);
}
}
@ -1325,7 +1337,7 @@ static void do_subtitle_out(AVFormatContext *s,
else
pkt.pts += 90 * sub->end_display_time;
}
write_frame(s, &pkt, ost->st->codec, ost->bitstream_filters);
write_frame(s, &pkt, ost);
}
}
@ -1471,7 +1483,7 @@ static void do_video_out(AVFormatContext *s,
pkt.pts = av_rescale_q(ost->sync_opts, enc->time_base, ost->st->time_base);
pkt.flags |= AV_PKT_FLAG_KEY;
write_frame(s, &pkt, ost->st->codec, ost->bitstream_filters);
write_frame(s, &pkt, ost);
} else {
AVFrame big_picture;
@ -1519,7 +1531,7 @@ static void do_video_out(AVFormatContext *s,
if (enc->coded_frame->key_frame)
pkt.flags |= AV_PKT_FLAG_KEY;
write_frame(s, &pkt, ost->st->codec, ost->bitstream_filters);
write_frame(s, &pkt, ost);
*frame_size = ret;
video_size += ret;
// fprintf(stderr,"\nFrame: %3d size: %5d type: %d",
@ -1531,7 +1543,6 @@ static void do_video_out(AVFormatContext *s,
}
}
ost->sync_opts++;
ost->frame_number++;
}
}
@ -1792,7 +1803,7 @@ static void flush_encoders(OutputStream *ost_table, int nb_ostreams)
pkt.size = ret;
if (enc->coded_frame && enc->coded_frame->pts != AV_NOPTS_VALUE)
pkt.pts = av_rescale_q(enc->coded_frame->pts, enc->time_base, ost->st->time_base);
write_frame(os, &pkt, ost->st->codec, ost->bitstream_filters);
write_frame(os, &pkt, ost);
}
}
}
@ -1876,9 +1887,8 @@ static void do_streamcopy(InputStream *ist, OutputStream *ost, const AVPacket *p
opkt.flags |= AV_PKT_FLAG_KEY;
}
write_frame(of->ctx, &opkt, ost->st->codec, ost->bitstream_filters);
write_frame(of->ctx, &opkt, ost);
ost->st->codec->frame_number++;
ost->frame_number++;
av_free_packet(&opkt);
}

@ -82,7 +82,7 @@ const int program_birth_year = 2003;
#define AUDIO_DIFF_AVG_NB 20
/* NOTE: the size must be big enough to compensate the hardware audio buffersize size */
#define SAMPLE_ARRAY_SIZE (2*65536)
#define SAMPLE_ARRAY_SIZE (2 * 65536)
static int sws_flags = SWS_BICUBIC;
@ -99,9 +99,9 @@ typedef struct PacketQueue {
#define SUBPICTURE_QUEUE_SIZE 4
typedef struct VideoPicture {
double pts; ///<presentation time stamp for this picture
double duration; ///<expected duration of the frame
int64_t pos; ///<byte position in file
double pts; ///< presentation time stamp for this picture
double duration; ///< expected duration of the frame
int64_t pos; ///< byte position in file
int skip;
SDL_Overlay *bmp;
int width, height; /* source height & width */
@ -207,13 +207,13 @@ typedef struct VideoState {
double frame_last_returned_time;
double frame_last_filter_delay;
int64_t frame_last_dropped_pos;
double video_clock; ///<pts of last decoded frame / predicted pts of next decoded frame
double video_clock; ///< pts of last decoded frame / predicted pts of next decoded frame
int video_stream;
AVStream *video_st;
PacketQueue videoq;
double video_current_pts; ///<current displayed pts (different from video_clock if frame fifos are used)
double video_current_pts_drift; ///<video_current_pts - time (av_gettime) at which we updated video_current_pts - used to have running video pts
int64_t video_current_pos; ///<current displayed file pos
double video_current_pts; ///< current displayed pts (different from video_clock if frame fifos are used)
double video_current_pts_drift; ///< video_current_pts - time (av_gettime) at which we updated video_current_pts - used to have running video pts
int64_t video_current_pos; ///< current displayed file pos
VideoPicture pictq[VIDEO_PICTURE_QUEUE_SIZE];
int pictq_size, pictq_rindex, pictq_windex;
SDL_mutex *pictq_mutex;
@ -227,7 +227,7 @@ typedef struct VideoState {
int step;
#if CONFIG_AVFILTER
AVFilterContext *out_video_filter; ///<the last filter in the video chain
AVFilterContext *out_video_filter; ///< the last filter in the video chain
#endif
int refresh;
@ -245,12 +245,12 @@ static int screen_width = 0;
static int screen_height = 0;
static int audio_disable;
static int video_disable;
static int wanted_stream[AVMEDIA_TYPE_NB]={
[AVMEDIA_TYPE_AUDIO]=-1,
[AVMEDIA_TYPE_VIDEO]=-1,
[AVMEDIA_TYPE_SUBTITLE]=-1,
static int wanted_stream[AVMEDIA_TYPE_NB] = {
[AVMEDIA_TYPE_AUDIO] = -1,
[AVMEDIA_TYPE_VIDEO] = -1,
[AVMEDIA_TYPE_SUBTITLE] = -1,
};
static int seek_by_bytes=-1;
static int seek_by_bytes = -1;
static int display_disable;
static int show_status = 1;
static int av_sync_type = AV_SYNC_AUDIO_MASTER;
@ -261,23 +261,22 @@ static int fast = 0;
static int genpts = 0;
static int lowres = 0;
static int idct = FF_IDCT_AUTO;
static enum AVDiscard skip_frame= AVDISCARD_DEFAULT;
static enum AVDiscard skip_idct= AVDISCARD_DEFAULT;
static enum AVDiscard skip_loop_filter= AVDISCARD_DEFAULT;
static enum AVDiscard skip_frame = AVDISCARD_DEFAULT;
static enum AVDiscard skip_idct = AVDISCARD_DEFAULT;
static enum AVDiscard skip_loop_filter = AVDISCARD_DEFAULT;
static int error_recognition = FF_ER_CAREFUL;
static int error_concealment = 3;
static int decoder_reorder_pts= -1;
static int decoder_reorder_pts = -1;
static int autoexit;
static int exit_on_keydown;
static int exit_on_mousedown;
static int loop=1;
static int framedrop=-1;
static int loop = 1;
static int framedrop = -1;
static enum ShowMode show_mode = SHOW_MODE_NONE;
static const char *audio_codec_name;
static const char *subtitle_codec_name;
static const char *video_codec_name;
static int rdftspeed=20;
static int rdftspeed = 20;
#if CONFIG_AVFILTER
static char *vfilters = NULL;
#endif
@ -304,7 +303,7 @@ static int packet_queue_put(PacketQueue *q, AVPacket *pkt)
AVPacketList *pkt1;
/* duplicate the packet */
if (pkt!=&flush_pkt && av_dup_packet(pkt) < 0)
if (pkt != &flush_pkt && av_dup_packet(pkt) < 0)
return -1;
pkt1 = av_malloc(sizeof(AVPacketList));
@ -345,7 +344,7 @@ static void packet_queue_flush(PacketQueue *q)
AVPacketList *pkt, *pkt1;
SDL_LockMutex(q->mutex);
for(pkt = q->first_pkt; pkt != NULL; pkt = pkt1) {
for (pkt = q->first_pkt; pkt != NULL; pkt = pkt1) {
pkt1 = pkt->next;
av_free_packet(&pkt->pkt);
av_freep(&pkt);
@ -383,7 +382,7 @@ static int packet_queue_get(PacketQueue *q, AVPacket *pkt, int block)
SDL_LockMutex(q->mutex);
for(;;) {
for (;;) {
if (q->abort_request) {
ret = -1;
break;
@ -490,7 +489,7 @@ static void blend_subrect(AVPicture *dst, const AVSubtitleRect *rect, int imgw,
lum++;
p += BPP;
}
for(w = dstw - (dstx & 1); w >= 2; w -= 2) {
for (w = dstw - (dstx & 1); w >= 2; w -= 2) {
YUVA_IN(y, u, v, a, p, pal);
u1 = u;
v1 = v;
@ -522,7 +521,7 @@ static void blend_subrect(AVPicture *dst, const AVSubtitleRect *rect, int imgw,
cb += dst->linesize[1] - width2 - skip2;
cr += dst->linesize[2] - width2 - skip2;
}
for(h = dsth - (dsty & 1); h >= 2; h -= 2) {
for (h = dsth - (dsty & 1); h >= 2; h -= 2) {
lum += dstx;
cb += skip2;
cr += skip2;
@ -547,7 +546,7 @@ static void blend_subrect(AVPicture *dst, const AVSubtitleRect *rect, int imgw,
p += -wrap3 + BPP;
lum += -wrap + 1;
}
for(w = dstw - (dstx & 1); w >= 2; w -= 2) {
for (w = dstw - (dstx & 1); w >= 2; w -= 2) {
YUVA_IN(y, u, v, a, p, pal);
u1 = u;
v1 = v;
@ -623,7 +622,7 @@ static void blend_subrect(AVPicture *dst, const AVSubtitleRect *rect, int imgw,
lum++;
p += BPP;
}
for(w = dstw - (dstx & 1); w >= 2; w -= 2) {
for (w = dstw - (dstx & 1); w >= 2; w -= 2) {
YUVA_IN(y, u, v, a, p, pal);
u1 = u;
v1 = v;
@ -742,9 +741,9 @@ static void video_audio_display(VideoState *s)
int16_t time_diff;
int rdft_bits, nb_freq;
for(rdft_bits=1; (1<<rdft_bits)<2*s->height; rdft_bits++)
for (rdft_bits = 1; (1 << rdft_bits) < 2 * s->height; rdft_bits++)
;
nb_freq= 1<<(rdft_bits-1);
nb_freq = 1 << (rdft_bits - 1);
/* compute display index : center on currently output samples */
channels = s->audio_tgt_channels;
@ -762,23 +761,23 @@ static void video_audio_display(VideoState *s)
delay -= (time_diff * s->audio_tgt_freq) / 1000000;
}
delay += 2*data_used;
delay += 2 * data_used;
if (delay < data_used)
delay = data_used;
i_start= x = compute_mod(s->sample_array_index - delay * channels, SAMPLE_ARRAY_SIZE);
if (s->show_mode == SHOW_MODE_WAVES) {
h= INT_MIN;
for(i=0; i<1000; i+=channels){
int idx= (SAMPLE_ARRAY_SIZE + x - i) % SAMPLE_ARRAY_SIZE;
int a= s->sample_array[idx];
int b= s->sample_array[(idx + 4*channels)%SAMPLE_ARRAY_SIZE];
int c= s->sample_array[(idx + 5*channels)%SAMPLE_ARRAY_SIZE];
int d= s->sample_array[(idx + 9*channels)%SAMPLE_ARRAY_SIZE];
int score= a-d;
if(h<score && (b^c)<0){
h= score;
i_start= idx;
h = INT_MIN;
for (i = 0; i < 1000; i += channels) {
int idx = (SAMPLE_ARRAY_SIZE + x - i) % SAMPLE_ARRAY_SIZE;
int a = s->sample_array[idx];
int b = s->sample_array[(idx + 4 * channels) % SAMPLE_ARRAY_SIZE];
int c = s->sample_array[(idx + 5 * channels) % SAMPLE_ARRAY_SIZE];
int d = s->sample_array[(idx + 9 * channels) % SAMPLE_ARRAY_SIZE];
int score = a - d;
if (h < score && (b ^ c) < 0) {
h = score;
i_start = idx;
}
}
}
@ -800,10 +799,10 @@ static void video_audio_display(VideoState *s)
h = s->height / nb_display_channels;
/* graph height / 2 */
h2 = (h * 9) / 20;
for(ch = 0;ch < nb_display_channels; ch++) {
for (ch = 0; ch < nb_display_channels; ch++) {
i = i_start + ch;
y1 = s->ytop + ch * h + (h / 2); /* position of center line */
for(x = 0; x < s->width; x++) {
for (x = 0; x < s->width; x++) {
y = (s->sample_array[i] * h2) >> 15;
if (y < 0) {
y = -y;
@ -822,45 +821,45 @@ static void video_audio_display(VideoState *s)
fgcolor = SDL_MapRGB(screen->format, 0x00, 0x00, 0xff);
for(ch = 1;ch < nb_display_channels; ch++) {
for (ch = 1; ch < nb_display_channels; ch++) {
y = s->ytop + ch * h;
fill_rectangle(screen,
s->xleft, y, s->width, 1,
fgcolor);
}
SDL_UpdateRect(screen, s->xleft, s->ytop, s->width, s->height);
}else{
} else {
nb_display_channels= FFMIN(nb_display_channels, 2);
if(rdft_bits != s->rdft_bits){
if (rdft_bits != s->rdft_bits) {
av_rdft_end(s->rdft);
av_free(s->rdft_data);
s->rdft = av_rdft_init(rdft_bits, DFT_R2C);
s->rdft_bits= rdft_bits;
s->rdft_data= av_malloc(4*nb_freq*sizeof(*s->rdft_data));
s->rdft_bits = rdft_bits;
s->rdft_data = av_malloc(4 * nb_freq * sizeof(*s->rdft_data));
}
{
FFTSample *data[2];
for(ch = 0;ch < nb_display_channels; ch++) {
data[ch] = s->rdft_data + 2*nb_freq*ch;
for (ch = 0; ch < nb_display_channels; ch++) {
data[ch] = s->rdft_data + 2 * nb_freq * ch;
i = i_start + ch;
for(x = 0; x < 2*nb_freq; x++) {
double w= (x-nb_freq)*(1.0/nb_freq);
data[ch][x]= s->sample_array[i]*(1.0-w*w);
for (x = 0; x < 2 * nb_freq; x++) {
double w = (x-nb_freq) * (1.0 / nb_freq);
data[ch][x] = s->sample_array[i] * (1.0 - w * w);
i += channels;
if (i >= SAMPLE_ARRAY_SIZE)
i -= SAMPLE_ARRAY_SIZE;
}
av_rdft_calc(s->rdft, data[ch]);
}
//least efficient way to do this, we should of course directly access it but its more than fast enough
for(y=0; y<s->height; y++){
double w= 1/sqrt(nb_freq);
int a= sqrt(w*sqrt(data[0][2*y+0]*data[0][2*y+0] + data[0][2*y+1]*data[0][2*y+1]));
int b= (nb_display_channels == 2 ) ? sqrt(w*sqrt(data[1][2*y+0]*data[1][2*y+0]
+ data[1][2*y+1]*data[1][2*y+1])) : a;
a= FFMIN(a,255);
b= FFMIN(b,255);
fgcolor = SDL_MapRGB(screen->format, a, b, (a+b)/2);
// least efficient way to do this, we should of course directly access it but its more than fast enough
for (y = 0; y < s->height; y++) {
double w = 1 / sqrt(nb_freq);
int a = sqrt(w * sqrt(data[0][2 * y + 0] * data[0][2 * y + 0] + data[0][2 * y + 1] * data[0][2 * y + 1]));
int b = (nb_display_channels == 2 ) ? sqrt(w * sqrt(data[1][2 * y + 0] * data[1][2 * y + 0]
+ data[1][2 * y + 1] * data[1][2 * y + 1])) : a;
a = FFMIN(a, 255);
b = FFMIN(b, 255);
fgcolor = SDL_MapRGB(screen->format, a, b, (a + b) / 2);
fill_rectangle(screen,
s->xpos, s->height-y, 1, 1,
@ -869,7 +868,7 @@ static void video_audio_display(VideoState *s)
}
SDL_UpdateRect(screen, s->xpos, s->ytop, 1, s->height);
s->xpos++;
if(s->xpos >= s->width)
if (s->xpos >= s->width)
s->xpos= s->xleft;
}
}
@ -884,7 +883,7 @@ static void stream_close(VideoState *is)
SDL_WaitThread(is->refresh_tid, NULL);
/* free all pictures */
for(i=0;i<VIDEO_PICTURE_QUEUE_SIZE; i++) {
for (i = 0; i < VIDEO_PICTURE_QUEUE_SIZE; i++) {
vp = &is->pictq[i];
#if CONFIG_AVFILTER
if (vp->picref) {
@ -926,25 +925,26 @@ static void do_exit(VideoState *is)
exit(0);
}
static int video_open(VideoState *is, int force_set_video_mode){
int flags = SDL_HWSURFACE|SDL_ASYNCBLIT|SDL_HWACCEL;
static int video_open(VideoState *is, int force_set_video_mode)
{
int flags = SDL_HWSURFACE | SDL_ASYNCBLIT | SDL_HWACCEL;
int w,h;
if(is_full_screen) flags |= SDL_FULLSCREEN;
if (is_full_screen) flags |= SDL_FULLSCREEN;
else flags |= SDL_RESIZABLE;
if (is_full_screen && fs_screen_width) {
w = fs_screen_width;
h = fs_screen_height;
} else if(!is_full_screen && screen_width){
} else if (!is_full_screen && screen_width) {
w = screen_width;
h = screen_height;
#if CONFIG_AVFILTER
}else if (is->out_video_filter && is->out_video_filter->inputs[0]){
} else if (is->out_video_filter && is->out_video_filter->inputs[0]) {
w = is->out_video_filter->inputs[0]->w;
h = is->out_video_filter->inputs[0]->h;
#else
}else if (is->video_st && is->video_st->codec->width){
} else if (is->video_st && is->video_st->codec->width) {
w = is->video_st->codec->width;
h = is->video_st->codec->height;
#endif
@ -952,7 +952,7 @@ static int video_open(VideoState *is, int force_set_video_mode){
w = 640;
h = 480;
}
if(screen && is->width == screen->w && screen->w == w
if (screen && is->width == screen->w && screen->w == w
&& is->height== screen->h && screen->h == h && !force_set_video_mode)
return 0;
screen = SDL_SetVideoMode(w, h, 0, flags);
@ -973,7 +973,7 @@ static int video_open(VideoState *is, int force_set_video_mode){
/* display the current picture, if any */
static void video_display(VideoState *is)
{
if(!screen)
if (!screen)
video_open(is, 0);
if (is->audio_st && is->show_mode != SHOW_MODE_VIDEO)
video_audio_display(is);
@ -984,12 +984,12 @@ static void video_display(VideoState *is)
static int refresh_thread(void *opaque)
{
VideoState *is= opaque;
while(!is->abort_request){
while (!is->abort_request) {
SDL_Event event;
event.type = FF_REFRESH_EVENT;
event.user.data1 = opaque;
if(!is->refresh){
is->refresh=1;
if (!is->refresh) {
is->refresh = 1;
SDL_PushEvent(&event);
}
//FIXME ideally we should wait the correct time but SDLs event passing is so slow it would be silly
@ -1065,7 +1065,7 @@ static void stream_toggle_pause(VideoState *is)
{
if (is->paused) {
is->frame_timer += av_gettime() / 1000000.0 + is->video_current_pts_drift - is->video_current_pts;
if(is->read_pause_return != AVERROR(ENOSYS)){
if (is->read_pause_return != AVERROR(ENOSYS)) {
is->video_current_pts = is->video_current_pts_drift + av_gettime() / 1000000.0;
}
is->video_current_pts_drift = is->video_current_pts - av_gettime() / 1000000.0;
@ -1140,7 +1140,7 @@ retry:
is->frame_last_dropped_pts = AV_NOPTS_VALUE;
}
SDL_UnlockMutex(is->pictq_mutex);
//nothing to do, no picture to display in the que
// nothing to do, no picture to display in the que
} else {
double last_duration, duration, delay;
/* dequeue the picture */
@ -1160,7 +1160,7 @@ retry:
delay = compute_target_delay(is->frame_last_duration, is);
time= av_gettime()/1000000.0;
if(time < is->frame_timer + delay)
if (time < is->frame_timer + delay)
return;
if (delay > 0)
@ -1170,8 +1170,8 @@ retry:
update_video_pts(is, vp->pts, vp->pos);
SDL_UnlockMutex(is->pictq_mutex);
if(is->pictq_size > 1) {
VideoPicture *nextvp= &is->pictq[(is->pictq_rindex+1)%VIDEO_PICTURE_QUEUE_SIZE];
if (is->pictq_size > 1) {
VideoPicture *nextvp = &is->pictq[(is->pictq_rindex + 1) % VIDEO_PICTURE_QUEUE_SIZE];
duration = nextvp->pts - vp->pts; // More accurate this way, 1/time_base is often not reflecting FPS
} else {
duration = vp->duration;
@ -1185,7 +1185,7 @@ retry:
}
}
if(is->subtitle_st) {
if (is->subtitle_st) {
if (is->subtitle_stream_changed) {
SDL_LockMutex(is->subpq_mutex);
@ -1406,7 +1406,7 @@ static int queue_picture(VideoState *is, AVFrame *src_frame, double pts1, int64_
if (vp->bmp) {
AVPicture pict;
#if CONFIG_AVFILTER
if(vp->picref)
if (vp->picref)
avfilter_unref_buffer(vp->picref);
vp->picref = src_frame->opaque;
#endif
@ -1414,7 +1414,7 @@ static int queue_picture(VideoState *is, AVFrame *src_frame, double pts1, int64_
/* get a pointer on the bitmap */
SDL_LockYUVOverlay (vp->bmp);
memset(&pict,0,sizeof(AVPicture));
memset(&pict, 0, sizeof(AVPicture));
pict.data[0] = vp->bmp->pixels[0];
pict.data[1] = vp->bmp->pixels[2];
pict.data[2] = vp->bmp->pixels[1];
@ -1424,7 +1424,7 @@ static int queue_picture(VideoState *is, AVFrame *src_frame, double pts1, int64_
pict.linesize[2] = vp->bmp->pitches[1];
#if CONFIG_AVFILTER
//FIXME use direct rendering
// FIXME use direct rendering
av_picture_copy(&pict, (AVPicture *)src_frame,
vp->pix_fmt, vp->width, vp->height);
#else
@ -1467,7 +1467,7 @@ static int get_video_frame(VideoState *is, AVFrame *frame, int64_t *pts, AVPacke
avcodec_flush_buffers(is->video_st->codec);
SDL_LockMutex(is->pictq_mutex);
//Make sure there are no long delay timers (ideally we should just flush the que but thats harder)
// Make sure there are no long delay timers (ideally we should just flush the que but thats harder)
for (i = 0; i < VIDEO_PICTURE_QUEUE_SIZE; i++) {
is->pictq[i].skip = 1;
}
@ -1549,12 +1549,12 @@ static int input_get_buffer(AVCodecContext *codec, AVFrame *pic)
if (codec->codec->capabilities & CODEC_CAP_NEG_LINESIZES)
perms |= AV_PERM_NEG_LINESIZES;
if(pic->buffer_hints & FF_BUFFER_HINTS_VALID) {
if(pic->buffer_hints & FF_BUFFER_HINTS_READABLE) perms |= AV_PERM_READ;
if(pic->buffer_hints & FF_BUFFER_HINTS_PRESERVE) perms |= AV_PERM_PRESERVE;
if(pic->buffer_hints & FF_BUFFER_HINTS_REUSABLE) perms |= AV_PERM_REUSE2;
if (pic->buffer_hints & FF_BUFFER_HINTS_VALID) {
if (pic->buffer_hints & FF_BUFFER_HINTS_READABLE) perms |= AV_PERM_READ;
if (pic->buffer_hints & FF_BUFFER_HINTS_PRESERVE) perms |= AV_PERM_PRESERVE;
if (pic->buffer_hints & FF_BUFFER_HINTS_REUSABLE) perms |= AV_PERM_REUSE2;
}
if(pic->reference) perms |= AV_PERM_READ | AV_PERM_PRESERVE;
if (pic->reference) perms |= AV_PERM_READ | AV_PERM_PRESERVE;
w = codec->width;
h = codec->height;
@ -1570,13 +1570,13 @@ static int input_get_buffer(AVCodecContext *codec, AVFrame *pic)
av_log(codec, AV_LOG_ERROR, "Pixel format mismatches %d %d\n", codec->pix_fmt, ctx->outputs[0]->format);
return -1;
}
if(!(ref = avfilter_get_video_buffer(ctx->outputs[0], perms, w, h)))
if (!(ref = avfilter_get_video_buffer(ctx->outputs[0], perms, w, h)))
return -1;
pixel_size = av_pix_fmt_descriptors[ref->format].comp[0].step_minus1+1;
pixel_size = av_pix_fmt_descriptors[ref->format].comp[0].step_minus1 + 1;
ref->video->w = codec->width;
ref->video->h = codec->height;
for(i = 0; i < 4; i ++) {
for (i = 0; i < 4; i ++) {
unsigned hshift = (i == 1 || i == 2) ? av_pix_fmt_descriptors[ref->format].log2_chroma_w : 0;
unsigned vshift = (i == 1 || i == 2) ? av_pix_fmt_descriptors[ref->format].log2_chroma_h : 0;
@ -1589,7 +1589,7 @@ static int input_get_buffer(AVCodecContext *codec, AVFrame *pic)
pic->opaque = ref;
pic->type = FF_BUFFER_TYPE_USER;
pic->reordered_opaque = codec->reordered_opaque;
if(codec->pkt) pic->pkt_pts = codec->pkt->pts;
if (codec->pkt) pic->pkt_pts = codec->pkt->pts;
else pic->pkt_pts = AV_NOPTS_VALUE;
return 0;
}
@ -1616,7 +1616,7 @@ static int input_reget_buffer(AVCodecContext *codec, AVFrame *pic)
}
pic->reordered_opaque = codec->reordered_opaque;
if(codec->pkt) pic->pkt_pts = codec->pkt->pts;
if (codec->pkt) pic->pkt_pts = codec->pkt->pts;
else pic->pkt_pts = AV_NOPTS_VALUE;
return 0;
}
@ -1625,13 +1625,12 @@ static int input_init(AVFilterContext *ctx, const char *args, void *opaque)
{
FilterPriv *priv = ctx->priv;
AVCodecContext *codec;
if(!opaque) return -1;
if (!opaque) return -1;
priv->is = opaque;
codec = priv->is->video_st->codec;
codec->opaque = ctx;
if((codec->codec->capabilities & CODEC_CAP_DR1)
) {
if (codec->codec->capabilities & CODEC_CAP_DR1) {
av_assert0(codec->flags & CODEC_FLAG_EMU_EDGE);
priv->use_dr1 = 1;
codec->get_buffer = input_get_buffer;
@ -1664,7 +1663,7 @@ static int input_request_frame(AVFilterLink *link)
if (ret < 0)
return -1;
if(priv->use_dr1 && priv->frame->opaque) {
if (priv->use_dr1 && priv->frame->opaque) {
picref = avfilter_ref_buffer(priv->frame->opaque, ~0);
} else {
picref = avfilter_get_video_buffer(link, AV_PERM_WRITE, link->w, link->h);
@ -1753,7 +1752,7 @@ static int configure_video_filters(AVFilterGraph *graph, VideoState *is, const c
if (ret < 0)
return ret;
if(vfilters) {
if (vfilters) {
AVFilterInOut *outputs = avfilter_inout_alloc();
AVFilterInOut *inputs = avfilter_inout_alloc();
@ -1787,7 +1786,7 @@ static int configure_video_filters(AVFilterGraph *graph, VideoState *is, const c
static int video_thread(void *arg)
{
VideoState *is = arg;
AVFrame *frame= avcodec_alloc_frame();
AVFrame *frame = avcodec_alloc_frame();
int64_t pts_int = AV_NOPTS_VALUE, pos = -1;
double pts;
int ret;
@ -1803,7 +1802,7 @@ static int video_thread(void *arg)
filt_out = is->out_video_filter;
#endif
for(;;) {
for (;;) {
#if !CONFIG_AVFILTER
AVPacket pkt;
#else
@ -1847,7 +1846,8 @@ static int video_thread(void *arg)
av_free_packet(&pkt);
#endif
if (ret < 0) goto the_end;
if (ret < 0)
goto the_end;
is->frame_last_filter_delay = av_gettime() / 1000000.0 - is->frame_last_returned_time;
if (fabs(is->frame_last_filter_delay) > AV_NOSYNC_THRESHOLD / 10.0)
@ -1858,7 +1858,7 @@ static int video_thread(void *arg)
continue;
#endif
pts = pts_int*av_q2d(is->video_st->time_base);
pts = pts_int * av_q2d(is->video_st->time_base);
ret = queue_picture(is, frame, pts, pos);
@ -1886,14 +1886,14 @@ static int subtitle_thread(void *arg)
int i, j;
int r, g, b, y, u, v, a;
for(;;) {
for (;;) {
while (is->paused && !is->subtitleq.abort_request) {
SDL_Delay(10);
}
if (packet_queue_get(&is->subtitleq, pkt, 1) < 0)
break;
if(pkt->data == flush_pkt.data){
if (pkt->data == flush_pkt.data) {
avcodec_flush_buffers(is->subtitle_st->codec);
continue;
}
@ -1913,7 +1913,7 @@ static int subtitle_thread(void *arg)
this packet, if any */
pts = 0;
if (pkt->pts != AV_NOPTS_VALUE)
pts = av_q2d(is->subtitle_st->time_base)*pkt->pts;
pts = av_q2d(is->subtitle_st->time_base) * pkt->pts;
avcodec_decode_subtitle2(is->subtitle_st->codec, &sp->sub,
&got_subtitle, pkt);
@ -2044,7 +2044,7 @@ static int audio_decode_frame(VideoState *is, double *pts_ptr)
{
AVPacket *pkt_temp = &is->audio_pkt_temp;
AVPacket *pkt = &is->audio_pkt;
AVCodecContext *dec= is->audio_st->codec;
AVCodecContext *dec = is->audio_st->codec;
int len1, len2, data_size, resampled_data_size;
int64_t dec_channel_layout;
int got_frame;
@ -2052,7 +2052,7 @@ static int audio_decode_frame(VideoState *is, double *pts_ptr)
int new_packet = 0;
int flush_complete = 0;
for(;;) {
for (;;) {
/* NOTE: the audio packet can contain several frames */
while (pkt_temp->size > 0 || (!pkt_temp->data && new_packet)) {
if (!is->frame) {
@ -2244,15 +2244,15 @@ static int stream_component_open(VideoState *is, int stream_index)
codec->max_lowres);
avctx->lowres= codec->max_lowres;
}
if(avctx->lowres) avctx->flags |= CODEC_FLAG_EMU_EDGE;
avctx->idct_algo= idct;
if(fast) avctx->flags2 |= CODEC_FLAG2_FAST;
avctx->skip_frame= skip_frame;
avctx->skip_idct= skip_idct;
avctx->skip_loop_filter= skip_loop_filter;
avctx->error_recognition= error_recognition;
avctx->error_concealment= error_concealment;
avctx->idct_algo = idct;
avctx->skip_frame = skip_frame;
avctx->skip_idct = skip_idct;
avctx->skip_loop_filter = skip_loop_filter;
avctx->error_recognition = error_recognition;
avctx->error_concealment = error_concealment;
if(avctx->lowres) avctx->flags |= CODEC_FLAG_EMU_EDGE;
if (fast) avctx->flags2 |= CODEC_FLAG2_FAST;
if(codec->capabilities & CODEC_CAP_DR1)
avctx->flags |= CODEC_FLAG_EMU_EDGE;
@ -2305,7 +2305,7 @@ static int stream_component_open(VideoState *is, int stream_index)
}
ic->streams[stream_index]->discard = AVDISCARD_DEFAULT;
switch(avctx->codec_type) {
switch (avctx->codec_type) {
case AVMEDIA_TYPE_AUDIO:
is->audio_stream = stream_index;
is->audio_st = ic->streams[stream_index];
@ -2352,7 +2352,7 @@ static void stream_component_close(VideoState *is, int stream_index)
return;
avctx = ic->streams[stream_index]->codec;
switch(avctx->codec_type) {
switch (avctx->codec_type) {
case AVMEDIA_TYPE_AUDIO:
packet_queue_abort(&is->audioq);
@ -2407,7 +2407,7 @@ static void stream_component_close(VideoState *is, int stream_index)
ic->streams[stream_index]->discard = AVDISCARD_ALL;
avcodec_close(avctx);
switch(avctx->codec_type) {
switch (avctx->codec_type) {
case AVMEDIA_TYPE_AUDIO:
is->audio_st = NULL;
is->audio_stream = -1;
@ -2439,7 +2439,7 @@ static int read_thread(void *arg)
int err, i, ret;
int st_index[AVMEDIA_TYPE_NB];
AVPacket pkt1, *pkt = &pkt1;
int eof=0;
int eof = 0;
int pkt_in_play_range = 0;
AVDictionaryEntry *t;
AVDictionary **opts;
@ -2466,7 +2466,7 @@ static int read_thread(void *arg)
}
is->ic = ic;
if(genpts)
if (genpts)
ic->flags |= AVFMT_FLAG_GENPTS;
opts = setup_find_stream_info_opts(ic, codec_opts);
@ -2482,11 +2482,11 @@ static int read_thread(void *arg)
av_dict_free(&opts[i]);
av_freep(&opts);
if(ic->pb)
ic->pb->eof_reached= 0; //FIXME hack, ffplay maybe should not use url_feof() to test for the end
if (ic->pb)
ic->pb->eof_reached = 0; // FIXME hack, ffplay maybe should not use url_feof() to test for the end
if(seek_by_bytes<0)
seek_by_bytes= !!(ic->iformat->flags & AVFMT_TS_DISCONT);
if (seek_by_bytes < 0)
seek_by_bytes = !!(ic->iformat->flags & AVFMT_TS_DISCONT);
/* if seeking requested, we execute it */
if (start_time != AV_NOPTS_VALUE) {
@ -2534,9 +2534,9 @@ static int read_thread(void *arg)
stream_component_open(is, st_index[AVMEDIA_TYPE_AUDIO]);
}
ret=-1;
ret = -1;
if (st_index[AVMEDIA_TYPE_VIDEO] >= 0) {
ret= stream_component_open(is, st_index[AVMEDIA_TYPE_VIDEO]);
ret = stream_component_open(is, st_index[AVMEDIA_TYPE_VIDEO]);
}
is->refresh_tid = SDL_CreateThread(refresh_thread, is);
if (is->show_mode == SHOW_MODE_NONE)
@ -2552,13 +2552,13 @@ static int read_thread(void *arg)
goto fail;
}
for(;;) {
for (;;) {
if (is->abort_request)
break;
if (is->paused != is->last_paused) {
is->last_paused = is->paused;
if (is->paused)
is->read_pause_return= av_read_pause(ic);
is->read_pause_return = av_read_pause(ic);
else
av_read_play(ic);
}
@ -2573,16 +2573,16 @@ static int read_thread(void *arg)
}
#endif
if (is->seek_req) {
int64_t seek_target= is->seek_pos;
int64_t seek_min= is->seek_rel > 0 ? seek_target - is->seek_rel + 2: INT64_MIN;
int64_t seek_max= is->seek_rel < 0 ? seek_target - is->seek_rel - 2: INT64_MAX;
//FIXME the +-2 is due to rounding being not done in the correct direction in generation
int64_t seek_target = is->seek_pos;
int64_t seek_min = is->seek_rel > 0 ? seek_target - is->seek_rel + 2: INT64_MIN;
int64_t seek_max = is->seek_rel < 0 ? seek_target - is->seek_rel - 2: INT64_MAX;
// FIXME the +-2 is due to rounding being not done in the correct direction in generation
// of the seek_pos/seek_rel variables
ret = avformat_seek_file(is->ic, -1, seek_min, seek_target, seek_max, is->seek_flags);
if (ret < 0) {
fprintf(stderr, "%s: error while seeking\n", is->ic->filename);
}else{
} else {
if (is->audio_stream >= 0) {
packet_queue_flush(&is->audioq);
packet_queue_put(&is->audioq, &flush_pkt);
@ -2597,24 +2597,24 @@ static int read_thread(void *arg)
}
}
is->seek_req = 0;
eof= 0;
eof = 0;
}
/* if the queue are full, no need to read more */
if ( is->audioq.size + is->videoq.size + is->subtitleq.size > MAX_QUEUE_SIZE
|| ( (is->audioq .size > MIN_AUDIOQ_SIZE || is->audio_stream<0)
&& (is->videoq .nb_packets > MIN_FRAMES || is->video_stream<0)
&& (is->subtitleq.nb_packets > MIN_FRAMES || is->subtitle_stream<0))) {
|| ( (is->audioq .size > MIN_AUDIOQ_SIZE || is->audio_stream < 0)
&& (is->videoq .nb_packets > MIN_FRAMES || is->video_stream < 0)
&& (is->subtitleq.nb_packets > MIN_FRAMES || is->subtitle_stream < 0))) {
/* wait 10 ms */
SDL_Delay(10);
continue;
}
if(eof) {
if(is->video_stream >= 0){
if (eof) {
if (is->video_stream >= 0) {
av_init_packet(pkt);
pkt->data=NULL;
pkt->size=0;
pkt->stream_index= is->video_stream;
pkt->data = NULL;
pkt->size = 0;
pkt->stream_index = is->video_stream;
packet_queue_put(&is->videoq, pkt);
}
if (is->audio_stream >= 0 &&
@ -2626,11 +2626,11 @@ static int read_thread(void *arg)
packet_queue_put(&is->audioq, pkt);
}
SDL_Delay(10);
if(is->audioq.size + is->videoq.size + is->subtitleq.size ==0){
if(loop!=1 && (!loop || --loop)){
if (is->audioq.size + is->videoq.size + is->subtitleq.size == 0) {
if (loop != 1 && (!loop || --loop)) {
stream_seek(is, start_time != AV_NOPTS_VALUE ? start_time : 0, 0, 0);
}else if(autoexit){
ret=AVERROR_EOF;
} else if (autoexit) {
ret = AVERROR_EOF;
goto fail;
}
}
@ -2640,7 +2640,7 @@ static int read_thread(void *arg)
ret = av_read_frame(ic, pkt);
if (ret < 0) {
if (ret == AVERROR_EOF || url_feof(ic->pb))
eof=1;
eof = 1;
if (ic->pb && ic->pb->error)
break;
SDL_Delay(100); /* wait for user event */
@ -2650,8 +2650,8 @@ static int read_thread(void *arg)
pkt_in_play_range = duration == AV_NOPTS_VALUE ||
(pkt->pts - ic->streams[pkt->stream_index]->start_time) *
av_q2d(ic->streams[pkt->stream_index]->time_base) -
(double)(start_time != AV_NOPTS_VALUE ? start_time : 0)/1000000
<= ((double)duration/1000000);
(double)(start_time != AV_NOPTS_VALUE ? start_time : 0) / 1000000
<= ((double)duration / 1000000);
if (pkt->stream_index == is->audio_stream && pkt_in_play_range) {
packet_queue_put(&is->audioq, pkt);
} else if (pkt->stream_index == is->video_stream && pkt_in_play_range) {
@ -2733,7 +2733,7 @@ static void stream_cycle_channel(VideoState *is, int codec_type)
if (start_index < (codec_type == AVMEDIA_TYPE_SUBTITLE ? -1 : 0))
return;
stream_index = start_index;
for(;;) {
for (;;) {
if (++stream_index >= is->ic->nb_streams)
{
if (codec_type == AVMEDIA_TYPE_SUBTITLE)
@ -2748,7 +2748,7 @@ static void stream_cycle_channel(VideoState *is, int codec_type)
st = ic->streams[stream_index];
if (st->codec->codec_type == codec_type) {
/* check that parameters are OK */
switch(codec_type) {
switch (codec_type) {
case AVMEDIA_TYPE_AUDIO:
if (st->codec->sample_rate != 0 &&
st->codec->channels != 0)
@ -2811,16 +2811,16 @@ static void event_loop(VideoState *cur_stream)
SDL_Event event;
double incr, pos, frac;
for(;;) {
for (;;) {
double x;
SDL_WaitEvent(&event);
switch(event.type) {
switch (event.type) {
case SDL_KEYDOWN:
if (exit_on_keydown) {
do_exit(cur_stream);
break;
}
switch(event.key.keysym.sym) {
switch (event.key.keysym.sym) {
case SDLK_ESCAPE:
case SDLK_q:
do_exit(cur_stream);
@ -2832,7 +2832,7 @@ static void event_loop(VideoState *cur_stream)
case SDLK_SPACE:
toggle_pause(cur_stream);
break;
case SDLK_s: //S: Step to next frame
case SDLK_s: // S: Step to next frame
step_to_next_frame(cur_stream);
break;
case SDLK_a:
@ -2866,11 +2866,11 @@ static void event_loop(VideoState *cur_stream)
incr = -60.0;
do_seek:
if (seek_by_bytes) {
if (cur_stream->video_stream >= 0 && cur_stream->video_current_pos>=0){
pos= cur_stream->video_current_pos;
}else if(cur_stream->audio_stream >= 0 && cur_stream->audio_pkt.pos>=0){
pos= cur_stream->audio_pkt.pos;
}else
if (cur_stream->video_stream >= 0 && cur_stream->video_current_pos >= 0) {
pos = cur_stream->video_current_pos;
} else if (cur_stream->audio_stream >= 0 && cur_stream->audio_pkt.pos >= 0) {
pos = cur_stream->audio_pkt.pos;
} else
pos = avio_tell(cur_stream->ic->pb);
if (cur_stream->ic->bit_rate)
incr *= cur_stream->ic->bit_rate / 8.0;
@ -2894,32 +2894,32 @@ static void event_loop(VideoState *cur_stream)
break;
}
case SDL_MOUSEMOTION:
if(event.type ==SDL_MOUSEBUTTONDOWN){
x= event.button.x;
}else{
if(event.motion.state != SDL_PRESSED)
if (event.type == SDL_MOUSEBUTTONDOWN) {
x = event.button.x;
} else {
if (event.motion.state != SDL_PRESSED)
break;
x= event.motion.x;
x = event.motion.x;
}
if(seek_by_bytes || cur_stream->ic->duration<=0){
uint64_t size= avio_size(cur_stream->ic->pb);
if (seek_by_bytes || cur_stream->ic->duration <= 0) {
uint64_t size = avio_size(cur_stream->ic->pb);
stream_seek(cur_stream, size*x/cur_stream->width, 0, 1);
}else{
} else {
int64_t ts;
int ns, hh, mm, ss;
int tns, thh, tmm, tss;
tns = cur_stream->ic->duration/1000000LL;
thh = tns/3600;
tmm = (tns%3600)/60;
tss = (tns%60);
frac = x/cur_stream->width;
ns = frac*tns;
hh = ns/3600;
mm = (ns%3600)/60;
ss = (ns%60);
tns = cur_stream->ic->duration / 1000000LL;
thh = tns / 3600;
tmm = (tns % 3600) / 60;
tss = (tns % 60);
frac = x / cur_stream->width;
ns = frac * tns;
hh = ns / 3600;
mm = (ns % 3600) / 60;
ss = (ns % 60);
fprintf(stderr, "Seek to %2.0f%% (%2d:%02d:%02d) of total duration (%2d:%02d:%02d) \n", frac*100,
hh, mm, ss, thh, tmm, tss);
ts = frac*cur_stream->ic->duration;
ts = frac * cur_stream->ic->duration;
if (cur_stream->ic->start_time != AV_NOPTS_VALUE)
ts += cur_stream->ic->start_time;
stream_seek(cur_stream, ts, 0, 0);
@ -2929,7 +2929,7 @@ static void event_loop(VideoState *cur_stream)
screen = SDL_SetVideoMode(event.resize.w, event.resize.h, 0,
SDL_HWSURFACE|SDL_RESIZABLE|SDL_ASYNCBLIT|SDL_HWACCEL);
screen_width = cur_stream->width = event.resize.w;
screen_height= cur_stream->height= event.resize.h;
screen_height = cur_stream->height = event.resize.h;
break;
case SDL_QUIT:
case FF_QUIT_EVENT:
@ -2941,7 +2941,7 @@ static void event_loop(VideoState *cur_stream)
break;
case FF_REFRESH_EVENT:
video_refresh(event.user.data1);
cur_stream->refresh=0;
cur_stream->refresh = 0;
break;
default:
break;
@ -3045,46 +3045,46 @@ static int dummy;
static const OptionDef options[] = {
#include "cmdutils_common_opts.h"
{ "x", HAS_ARG, {(void*)opt_width}, "force displayed width", "width" },
{ "y", HAS_ARG, {(void*)opt_height}, "force displayed height", "height" },
{ "s", HAS_ARG | OPT_VIDEO, {(void*)opt_frame_size}, "set frame size (WxH or abbreviation)", "size" },
{ "fs", OPT_BOOL, {(void*)&is_full_screen}, "force full screen" },
{ "an", OPT_BOOL, {(void*)&audio_disable}, "disable audio" },
{ "vn", OPT_BOOL, {(void*)&video_disable}, "disable video" },
{ "ast", OPT_INT | HAS_ARG | OPT_EXPERT, {(void*)&wanted_stream[AVMEDIA_TYPE_AUDIO]}, "select desired audio stream", "stream_number" },
{ "vst", OPT_INT | HAS_ARG | OPT_EXPERT, {(void*)&wanted_stream[AVMEDIA_TYPE_VIDEO]}, "select desired video stream", "stream_number" },
{ "sst", OPT_INT | HAS_ARG | OPT_EXPERT, {(void*)&wanted_stream[AVMEDIA_TYPE_SUBTITLE]}, "select desired subtitle stream", "stream_number" },
{ "ss", HAS_ARG, {(void*)&opt_seek}, "seek to a given position in seconds", "pos" },
{ "t", HAS_ARG, {(void*)&opt_duration}, "play \"duration\" seconds of audio/video", "duration" },
{ "bytes", OPT_INT | HAS_ARG, {(void*)&seek_by_bytes}, "seek by bytes 0=off 1=on -1=auto", "val" },
{ "nodisp", OPT_BOOL, {(void*)&display_disable}, "disable graphical display" },
{ "f", HAS_ARG, {(void*)opt_format}, "force format", "fmt" },
{ "pix_fmt", HAS_ARG | OPT_EXPERT | OPT_VIDEO, {(void*)opt_frame_pix_fmt}, "set pixel format", "format" },
{ "stats", OPT_BOOL | OPT_EXPERT, {(void*)&show_status}, "show status", "" },
{ "bug", OPT_INT | HAS_ARG | OPT_EXPERT, {(void*)&workaround_bugs}, "workaround bugs", "" },
{ "fast", OPT_BOOL | OPT_EXPERT, {(void*)&fast}, "non spec compliant optimizations", "" },
{ "genpts", OPT_BOOL | OPT_EXPERT, {(void*)&genpts}, "generate pts", "" },
{ "drp", OPT_INT | HAS_ARG | OPT_EXPERT, {(void*)&decoder_reorder_pts}, "let decoder reorder pts 0=off 1=on -1=auto", ""},
{ "lowres", OPT_INT | HAS_ARG | OPT_EXPERT, {(void*)&lowres}, "", "" },
{ "skiploop", OPT_INT | HAS_ARG | OPT_EXPERT, {(void*)&skip_loop_filter}, "", "" },
{ "skipframe", OPT_INT | HAS_ARG | OPT_EXPERT, {(void*)&skip_frame}, "", "" },
{ "skipidct", OPT_INT | HAS_ARG | OPT_EXPERT, {(void*)&skip_idct}, "", "" },
{ "idct", OPT_INT | HAS_ARG | OPT_EXPERT, {(void*)&idct}, "set idct algo", "algo" },
{ "er", OPT_INT | HAS_ARG | OPT_EXPERT, {(void*)&error_recognition}, "set error detection threshold (0-4)", "threshold" },
{ "ec", OPT_INT | HAS_ARG | OPT_EXPERT, {(void*)&error_concealment}, "set error concealment options", "bit_mask" },
{ "sync", HAS_ARG | OPT_EXPERT, {(void*)opt_sync}, "set audio-video sync. type (type=audio/video/ext)", "type" },
{ "autoexit", OPT_BOOL | OPT_EXPERT, {(void*)&autoexit}, "exit at the end", "" },
{ "exitonkeydown", OPT_BOOL | OPT_EXPERT, {(void*)&exit_on_keydown}, "exit on key down", "" },
{ "exitonmousedown", OPT_BOOL | OPT_EXPERT, {(void*)&exit_on_mousedown}, "exit on mouse down", "" },
{ "loop", OPT_INT | HAS_ARG | OPT_EXPERT, {(void*)&loop}, "set number of times the playback shall be looped", "loop count" },
{ "framedrop", OPT_BOOL | OPT_EXPERT, {(void*)&framedrop}, "drop frames when cpu is too slow", "" },
{ "window_title", OPT_STRING | HAS_ARG, {(void*)&window_title}, "set window title", "window title" },
{ "x", HAS_ARG, { (void*)opt_width }, "force displayed width", "width" },
{ "y", HAS_ARG, { (void*)opt_height }, "force displayed height", "height" },
{ "s", HAS_ARG | OPT_VIDEO, { (void*)opt_frame_size }, "set frame size (WxH or abbreviation)", "size" },
{ "fs", OPT_BOOL, { (void*)&is_full_screen }, "force full screen" },
{ "an", OPT_BOOL, { (void*)&audio_disable }, "disable audio" },
{ "vn", OPT_BOOL, { (void*)&video_disable }, "disable video" },
{ "ast", OPT_INT | HAS_ARG | OPT_EXPERT, { (void*)&wanted_stream[AVMEDIA_TYPE_AUDIO] }, "select desired audio stream", "stream_number" },
{ "vst", OPT_INT | HAS_ARG | OPT_EXPERT, { (void*)&wanted_stream[AVMEDIA_TYPE_VIDEO] }, "select desired video stream", "stream_number" },
{ "sst", OPT_INT | HAS_ARG | OPT_EXPERT, { (void*)&wanted_stream[AVMEDIA_TYPE_SUBTITLE] }, "select desired subtitle stream", "stream_number" },
{ "ss", HAS_ARG, { (void*)&opt_seek }, "seek to a given position in seconds", "pos" },
{ "t", HAS_ARG, { (void*)&opt_duration }, "play \"duration\" seconds of audio/video", "duration" },
{ "bytes", OPT_INT | HAS_ARG, { (void*)&seek_by_bytes }, "seek by bytes 0=off 1=on -1=auto", "val" },
{ "nodisp", OPT_BOOL, { (void*)&display_disable }, "disable graphical display" },
{ "f", HAS_ARG, { (void*)opt_format }, "force format", "fmt" },
{ "pix_fmt", HAS_ARG | OPT_EXPERT | OPT_VIDEO, { (void*)opt_frame_pix_fmt }, "set pixel format", "format" },
{ "stats", OPT_BOOL | OPT_EXPERT, { (void*)&show_status }, "show status", "" },
{ "bug", OPT_INT | HAS_ARG | OPT_EXPERT, { (void*)&workaround_bugs }, "workaround bugs", "" },
{ "fast", OPT_BOOL | OPT_EXPERT, { (void*)&fast }, "non spec compliant optimizations", "" },
{ "genpts", OPT_BOOL | OPT_EXPERT, { (void*)&genpts }, "generate pts", "" },
{ "drp", OPT_INT | HAS_ARG | OPT_EXPERT, { (void*)&decoder_reorder_pts }, "let decoder reorder pts 0=off 1=on -1=auto", ""},
{ "lowres", OPT_INT | HAS_ARG | OPT_EXPERT, { (void*)&lowres }, "", "" },
{ "skiploop", OPT_INT | HAS_ARG | OPT_EXPERT, { (void*)&skip_loop_filter }, "", "" },
{ "skipframe", OPT_INT | HAS_ARG | OPT_EXPERT, { (void*)&skip_frame }, "", "" },
{ "skipidct", OPT_INT | HAS_ARG | OPT_EXPERT, { (void*)&skip_idct }, "", "" },
{ "idct", OPT_INT | HAS_ARG | OPT_EXPERT, { (void*)&idct }, "set idct algo", "algo" },
{ "er", OPT_INT | HAS_ARG | OPT_EXPERT, { (void*)&error_recognition }, "set error detection threshold (0-4)", "threshold" },
{ "ec", OPT_INT | HAS_ARG | OPT_EXPERT, { (void*)&error_concealment }, "set error concealment options", "bit_mask" },
{ "sync", HAS_ARG | OPT_EXPERT, { (void*)opt_sync }, "set audio-video sync. type (type=audio/video/ext)", "type" },
{ "autoexit", OPT_BOOL | OPT_EXPERT, { (void*)&autoexit }, "exit at the end", "" },
{ "exitonkeydown", OPT_BOOL | OPT_EXPERT, { (void*)&exit_on_keydown }, "exit on key down", "" },
{ "exitonmousedown", OPT_BOOL | OPT_EXPERT, { (void*)&exit_on_mousedown }, "exit on mouse down", "" },
{ "loop", OPT_INT | HAS_ARG | OPT_EXPERT, { (void*)&loop }, "set number of times the playback shall be looped", "loop count" },
{ "framedrop", OPT_BOOL | OPT_EXPERT, { (void*)&framedrop }, "drop frames when cpu is too slow", "" },
{ "window_title", OPT_STRING | HAS_ARG, { (void*)&window_title }, "set window title", "window title" },
#if CONFIG_AVFILTER
{ "vf", OPT_STRING | HAS_ARG, {(void*)&vfilters}, "video filters", "filter list" },
{ "vf", OPT_STRING | HAS_ARG, { (void*)&vfilters }, "video filters", "filter list" },
#endif
{ "rdftspeed", OPT_INT | HAS_ARG| OPT_AUDIO | OPT_EXPERT, {(void*)&rdftspeed}, "rdft speed", "msecs" },
{ "rdftspeed", OPT_INT | HAS_ARG| OPT_AUDIO | OPT_EXPERT, { (void*)&rdftspeed }, "rdft speed", "msecs" },
{ "showmode", HAS_ARG, {(void*)opt_show_mode}, "select show mode (0 = video, 1 = waves, 2 = RDFT)", "mode" },
{ "default", HAS_ARG | OPT_AUDIO | OPT_VIDEO | OPT_EXPERT, {(void*)opt_default}, "generic catch all option", "" },
{ "default", HAS_ARG | OPT_AUDIO | OPT_VIDEO | OPT_EXPERT, { (void*)opt_default }, "generic catch all option", "" },
{ "i", OPT_BOOL, {(void *)&dummy}, "read specified file", "input_file"},
{ "codec", HAS_ARG | OPT_FUNC2, {(void*)opt_codec}, "force decoder", "decoder" },
{ NULL, },
@ -3213,7 +3213,7 @@ int main(int argc, char **argv)
}
av_init_packet(&flush_pkt);
flush_pkt.data= "FLUSH";
flush_pkt.data = "FLUSH";
is = stream_open(input_filename, file_iformat);
if (!is) {

@ -795,6 +795,10 @@ typedef struct RcOverride{
* Codec supports changed parameters at any point.
*/
#define CODEC_CAP_PARAM_CHANGE 0x4000
/**
* Codec supports avctx->thread_count == 0 (auto).
*/
#define CODEC_CAP_AUTO_THREADS 0x8000
/**
* Codec is lossless.
*/

@ -37,7 +37,7 @@ typedef struct BFIContext {
uint32_t pal[256];
} BFIContext;
static av_cold int bfi_decode_init(AVCodecContext * avctx)
static av_cold int bfi_decode_init(AVCodecContext *avctx)
{
BFIContext *bfi = avctx->priv_data;
avctx->pix_fmt = PIX_FMT_PAL8;
@ -46,7 +46,7 @@ static av_cold int bfi_decode_init(AVCodecContext * avctx)
return 0;
}
static int bfi_decode_frame(AVCodecContext * avctx, void *data,
static int bfi_decode_frame(AVCodecContext *avctx, void *data,
int *data_size, AVPacket *avpkt)
{
const uint8_t *buf = avpkt->data, *buf_end = avpkt->data + avpkt->size;
@ -73,11 +73,11 @@ static int bfi_decode_frame(AVCodecContext * avctx, void *data,
bfi->frame.pict_type = AV_PICTURE_TYPE_I;
bfi->frame.key_frame = 1;
/* Setting the palette */
if(avctx->extradata_size>768) {
if (avctx->extradata_size > 768) {
av_log(NULL, AV_LOG_ERROR, "Palette is too large.\n");
return -1;
}
pal = (uint32_t *) bfi->frame.data[1];
pal = (uint32_t *)bfi->frame.data[1];
for (i = 0; i < avctx->extradata_size / 3; i++) {
int shift = 16;
*pal = 0xFF << 24;
@ -96,16 +96,17 @@ static int bfi_decode_frame(AVCodecContext * avctx, void *data,
memcpy(bfi->frame.data[1], bfi->pal, sizeof(bfi->pal));
}
buf += 4; //Unpacked size, not required.
buf += 4; // Unpacked size, not required.
while (dst != frame_end) {
static const uint8_t lentab[4]={0,2,0,1};
static const uint8_t lentab[4] = { 0, 2, 0, 1 };
unsigned int byte = *buf++, av_uninit(offset);
unsigned int code = byte >> 6;
unsigned int length = byte & ~0xC0;
if (buf >= buf_end) {
av_log(avctx, AV_LOG_ERROR, "Input resolution larger than actual frame.\n");
av_log(avctx, AV_LOG_ERROR,
"Input resolution larger than actual frame.\n");
return -1;
}
@ -125,7 +126,7 @@ static int bfi_decode_frame(AVCodecContext * avctx, void *data,
}
/* Do boundary check */
if (dst + (length<<lentab[code]) > frame_end)
if (dst + (length << lentab[code]) > frame_end)
break;
switch (code) {
@ -172,7 +173,7 @@ static int bfi_decode_frame(AVCodecContext * avctx, void *data,
dst += bfi->frame.linesize[0];
}
*data_size = sizeof(AVFrame);
*(AVFrame *) data = bfi->frame;
*(AVFrame *)data = bfi->frame;
return buf_size;
}

@ -474,7 +474,8 @@ int ff_bgmc_init(AVCodecContext *avctx, uint8_t **cf_lut, int **cf_lut_status)
av_log(avctx, AV_LOG_ERROR, "Allocating buffer memory failed.\n");
return AVERROR(ENOMEM);
} else {
// initialize lut_status buffer to a value never used to compare against
// initialize lut_status buffer to a value never used to compare
// against
memset(*cf_lut_status, -1, sizeof(*cf_lut_status) * LUT_BUFF);
}
@ -567,4 +568,3 @@ void ff_bgmc_decode(GetBitContext *gb, unsigned int num, int32_t *dst,
*l = low;
*v = value;
}

@ -696,7 +696,7 @@ AVCodec ff_libx264_encoder = {
.init = X264_init,
.encode = X264_frame,
.close = X264_close,
.capabilities = CODEC_CAP_DELAY,
.capabilities = CODEC_CAP_DELAY | CODEC_CAP_AUTO_THREADS,
.long_name = NULL_IF_CONFIG_SMALL("libx264 H.264 / AVC / MPEG-4 AVC / MPEG-4 part 10"),
.priv_class = &class,
.defaults = x264_defaults,

@ -193,7 +193,7 @@ static int get_logical_cpus(AVCodecContext *avctx)
if (avctx->height)
nb_cpus = FFMIN(nb_cpus, (avctx->height+15)/16);
return FFMIN(nb_cpus, MAX_AUTO_THREADS);
return nb_cpus;
}
@ -303,9 +303,11 @@ static int thread_init(AVCodecContext *avctx)
if (!thread_count) {
int nb_cpus = get_logical_cpus(avctx);
// use number of cores + 1 as thread count if there is motre than one
// use number of cores + 1 as thread count if there is more than one
if (nb_cpus > 1)
thread_count = avctx->thread_count = nb_cpus + 1;
thread_count = avctx->thread_count = FFMIN(nb_cpus + 1, MAX_AUTO_THREADS);
else
thread_count = avctx->thread_count = 1;
}
if (thread_count <= 1) {
@ -783,9 +785,11 @@ static int frame_thread_init(AVCodecContext *avctx)
int nb_cpus = get_logical_cpus(avctx);
if ((avctx->debug & (FF_DEBUG_VIS_QP | FF_DEBUG_VIS_MB_TYPE)) || avctx->debug_mv)
nb_cpus = 1;
// use number of cores + 1 as thread count if there is motre than one
// use number of cores + 1 as thread count if there is more than one
if (nb_cpus > 1)
thread_count = avctx->thread_count = nb_cpus + 1;
thread_count = avctx->thread_count = FFMIN(nb_cpus + 1, MAX_AUTO_THREADS);
else
thread_count = avctx->thread_count = 1;
}
if (thread_count <= 1) {
@ -1002,6 +1006,9 @@ static void validate_thread_parameters(AVCodecContext *avctx)
} else if (avctx->codec->capabilities & CODEC_CAP_SLICE_THREADS &&
avctx->thread_type & FF_THREAD_SLICE) {
avctx->active_thread_type = FF_THREAD_SLICE;
} else if (!(avctx->codec->capabilities & CODEC_CAP_AUTO_THREADS)) {
avctx->thread_count = 1;
avctx->active_thread_type = 0;
}
}

@ -765,6 +765,8 @@ int attribute_align_arg avcodec_open2(AVCodecContext *avctx, AVCodec *codec, AVD
goto free_and_end;
}
}
if (!HAVE_THREADS && !(codec->capabilities & CODEC_CAP_AUTO_THREADS))
avctx->thread_count = 1;
if (avctx->codec->max_lowres < avctx->lowres || avctx->lowres < 0) {
av_log(avctx, AV_LOG_ERROR, "The maximum value for lowres supported by the decoder is %d\n",

@ -22,7 +22,7 @@
#define LIBAVCODEC_VERSION_MAJOR 53
#define LIBAVCODEC_VERSION_MINOR 49
#define LIBAVCODEC_VERSION_MICRO 101
#define LIBAVCODEC_VERSION_MICRO 102
#define LIBAVCODEC_VERSION_INT AV_VERSION_INT(LIBAVCODEC_VERSION_MAJOR, \
LIBAVCODEC_VERSION_MINOR, \

@ -1,35 +1,35 @@
FATE_DFA += fate-dfa1
fate-dfa1: CMD = framecrc -i $(SAMPLES)/chronomaster-dfa/0000.dfa
fate-dfa1: CMD = framecrc -i $(SAMPLES)/chronomaster-dfa/0000.dfa -pix_fmt rgb24
FATE_DFA += fate-dfa2
fate-dfa2: CMD = framecrc -i $(SAMPLES)/chronomaster-dfa/0001.dfa
fate-dfa2: CMD = framecrc -i $(SAMPLES)/chronomaster-dfa/0001.dfa -pix_fmt rgb24
FATE_DFA += fate-dfa3
fate-dfa3: CMD = framecrc -i $(SAMPLES)/chronomaster-dfa/0002.dfa
fate-dfa3: CMD = framecrc -i $(SAMPLES)/chronomaster-dfa/0002.dfa -pix_fmt rgb24
FATE_DFA += fate-dfa4
fate-dfa4: CMD = framecrc -i $(SAMPLES)/chronomaster-dfa/0003.dfa
fate-dfa4: CMD = framecrc -i $(SAMPLES)/chronomaster-dfa/0003.dfa -pix_fmt rgb24
FATE_DFA += fate-dfa5
fate-dfa5: CMD = framecrc -i $(SAMPLES)/chronomaster-dfa/0004.dfa
fate-dfa5: CMD = framecrc -i $(SAMPLES)/chronomaster-dfa/0004.dfa -pix_fmt rgb24
FATE_DFA += fate-dfa6
fate-dfa6: CMD = framecrc -i $(SAMPLES)/chronomaster-dfa/0005.dfa
fate-dfa6: CMD = framecrc -i $(SAMPLES)/chronomaster-dfa/0005.dfa -pix_fmt rgb24
FATE_DFA += fate-dfa7
fate-dfa7: CMD = framecrc -i $(SAMPLES)/chronomaster-dfa/0006.dfa
fate-dfa7: CMD = framecrc -i $(SAMPLES)/chronomaster-dfa/0006.dfa -pix_fmt rgb24
FATE_DFA += fate-dfa8
fate-dfa8: CMD = framecrc -i $(SAMPLES)/chronomaster-dfa/0007.dfa
fate-dfa8: CMD = framecrc -i $(SAMPLES)/chronomaster-dfa/0007.dfa -pix_fmt rgb24
FATE_DFA += fate-dfa9
fate-dfa9: CMD = framecrc -i $(SAMPLES)/chronomaster-dfa/0008.dfa
fate-dfa9: CMD = framecrc -i $(SAMPLES)/chronomaster-dfa/0008.dfa -pix_fmt rgb24
FATE_DFA += fate-dfa10
fate-dfa10: CMD = framecrc -i $(SAMPLES)/chronomaster-dfa/0009.dfa
fate-dfa10: CMD = framecrc -i $(SAMPLES)/chronomaster-dfa/0009.dfa -pix_fmt rgb24
FATE_DFA += fate-dfa11
fate-dfa11: CMD = framecrc -i $(SAMPLES)/chronomaster-dfa/0010.dfa
fate-dfa11: CMD = framecrc -i $(SAMPLES)/chronomaster-dfa/0010.dfa -pix_fmt rgb24
FATE_TESTS += $(FATE_DFA)
fate-dfa: $(FATE_DFA)

@ -1,25 +1,25 @@
0, 0, 308224, 0x7264439e
0, 11520, 308224, 0xe1734f4b
0, 23040, 308224, 0x9cfe28a4
0, 34560, 308224, 0xebb6ec8b
0, 46080, 308224, 0xaef16ca7
0, 57600, 308224, 0x0390b439
0, 69120, 308224, 0xe69bd008
0, 80640, 308224, 0xa1818468
0, 92160, 308224, 0x9d6e7d82
0, 103680, 308224, 0x54971a9e
0, 115200, 308224, 0xe14e15a8
0, 126720, 308224, 0xa026cf3f
0, 138240, 308224, 0xf8921be4
0, 149760, 308224, 0xf49a42cc
0, 161280, 308224, 0xa4108f17
0, 172800, 308224, 0xfa79cbfe
0, 184320, 308224, 0x3431f47b
0, 195840, 308224, 0x72aa3426
0, 207360, 308224, 0x81159f85
0, 218880, 308224, 0x04bcb289
0, 230400, 308224, 0xb1dabbcd
0, 241920, 308224, 0x7e851c8c
0, 253440, 308224, 0x8bdea0bf
0, 264960, 308224, 0xecacdb11
0, 276480, 308224, 0xec4c6c41
0, 0, 921600, 0xb69faa34
0, 11520, 921600, 0x38680829
0, 23040, 921600, 0xa7263c5a
0, 34560, 921600, 0xa784626a
0, 46080, 921600, 0xb4c47212
0, 57600, 921600, 0xd17285ea
0, 69120, 921600, 0xe9b33902
0, 80640, 921600, 0x215ea693
0, 92160, 921600, 0xe2ab6c7a
0, 103680, 921600, 0xf2867624
0, 115200, 921600, 0x607d78c1
0, 126720, 921600, 0x6e743bb7
0, 138240, 921600, 0x1fbf8f5a
0, 149760, 921600, 0xac6c912e
0, 161280, 921600, 0x556933bc
0, 172800, 921600, 0xda4c242b
0, 184320, 921600, 0xa6b32f83
0, 195840, 921600, 0x1ecc2996
0, 207360, 921600, 0xf1c3fc0f
0, 218880, 921600, 0x3f1db909
0, 230400, 921600, 0x7582fb93
0, 241920, 921600, 0x102ba261
0, 253440, 921600, 0xfbcf9de0
0, 264960, 921600, 0xe9ecb4d9
0, 276480, 921600, 0x7ee36a42

@ -1,8 +1,8 @@
0, 0, 65024, 0x8f31c3f0
0, 6390, 65024, 0x164a2d82
0, 12780, 65024, 0xbb72b738
0, 19170, 65024, 0x45b93e3a
0, 25560, 65024, 0xcc4019df
0, 31950, 65024, 0x64644557
0, 38340, 65024, 0xb4584b28
0, 44730, 65024, 0x1d87966a
0, 0, 192000, 0x7384f9b2
0, 6390, 192000, 0xd1f61c71
0, 12780, 192000, 0x0c6937d1
0, 19170, 192000, 0x56459a3a
0, 25560, 192000, 0x6d011790
0, 31950, 192000, 0xb5347ce8
0, 38340, 192000, 0xcd422568
0, 44730, 192000, 0xde4fef2d

@ -1,9 +1,9 @@
0, 0, 65024, 0x10db5645
0, 6390, 65024, 0xb5d8a5bd
0, 12780, 65024, 0xc9555f27
0, 19170, 65024, 0x74c43f84
0, 25560, 65024, 0x5b2445b0
0, 31950, 65024, 0x8bd5be38
0, 38340, 65024, 0x75ec97da
0, 44730, 65024, 0x34416636
0, 51120, 65024, 0x9cc2abcf
0, 0, 192000, 0x4269d703
0, 6390, 192000, 0xdf8667e7
0, 12780, 192000, 0x450026ad
0, 19170, 192000, 0x2528ea52
0, 25560, 192000, 0x83bcd1ec
0, 31950, 192000, 0x88d5ba27
0, 38340, 192000, 0x44424577
0, 44730, 192000, 0xd93f12a3
0, 51120, 192000, 0xcd625f3e

@ -1,17 +1,17 @@
0, 0, 308224, 0x8dc9803f
0, 6390, 308224, 0x06308b37
0, 12780, 308224, 0xb8cb7be6
0, 19170, 308224, 0xc538862b
0, 25560, 308224, 0x8d4b7702
0, 31950, 308224, 0x97a479f0
0, 38340, 308224, 0x63d08e67
0, 44730, 308224, 0x470e8a18
0, 51120, 308224, 0x08aa6be4
0, 57510, 308224, 0x3b2f6f9a
0, 63900, 308224, 0xf0f1490c
0, 70290, 308224, 0xcb8b2ec5
0, 76680, 308224, 0xab361e75
0, 83070, 308224, 0x485aed6d
0, 89460, 308224, 0xd3e7ecb7
0, 95850, 308224, 0xa2c0d561
0, 102240, 308224, 0xd8f8ccd4
0, 0, 921600, 0x8a5d15df
0, 6390, 921600, 0x92c01362
0, 12780, 921600, 0xe1a31643
0, 19170, 921600, 0x37a90fe2
0, 25560, 921600, 0x74410783
0, 31950, 921600, 0xecf4ef1a
0, 38340, 921600, 0x4d7ff3d4
0, 44730, 921600, 0xac820317
0, 51120, 921600, 0xbe5ff56e
0, 57510, 921600, 0x8e59c329
0, 63900, 921600, 0x73bf23f3
0, 70290, 921600, 0xb90c780f
0, 76680, 921600, 0xfbd9dc32
0, 83070, 921600, 0x30586821
0, 89460, 921600, 0x6695195b
0, 95850, 921600, 0xc449aa85
0, 102240, 921600, 0xca6a391c

@ -1,10 +1,10 @@
0, 0, 65024, 0xbf9d558b
0, 9000, 65024, 0x4c7ea2ac
0, 18000, 65024, 0x4931827c
0, 27000, 65024, 0x5a9e09a7
0, 36000, 65024, 0x2b76eca9
0, 45000, 65024, 0xd5400a96
0, 54000, 65024, 0xcca17f23
0, 63000, 65024, 0xebca0dec
0, 72000, 65024, 0x07a73cfc
0, 81000, 65024, 0xdd5e4620
0, 0, 192000, 0x236a1b54
0, 9000, 192000, 0xfb438b68
0, 18000, 192000, 0xde504563
0, 27000, 192000, 0xfaf88e05
0, 36000, 192000, 0xe15de5af
0, 45000, 192000, 0x641fcca4
0, 54000, 192000, 0x74899cb6
0, 63000, 192000, 0x93fdb1b4
0, 72000, 192000, 0x58d83456
0, 81000, 192000, 0x7d3012ac

@ -1,13 +1,13 @@
0, 0, 308224, 0x5a24821c
0, 12780, 308224, 0xa1ecf793
0, 25560, 308224, 0xcb91afa5
0, 38340, 308224, 0x8b7e85b9
0, 51120, 308224, 0xe4755628
0, 63900, 308224, 0xe4755628
0, 76680, 308224, 0xe4755628
0, 89460, 308224, 0xe4755628
0, 102240, 308224, 0xe4755628
0, 115020, 308224, 0xe4755628
0, 127800, 308224, 0xdd6ca523
0, 140580, 308224, 0x961ba417
0, 153360, 308224, 0x5ed15e7f
0, 0, 921600, 0xd9e060e3
0, 12780, 921600, 0x15e28dc7
0, 25560, 921600, 0x78e8bfbc
0, 38340, 921600, 0xe9407075
0, 51120, 921600, 0xab818b8a
0, 63900, 921600, 0xab818b8a
0, 76680, 921600, 0xab818b8a
0, 89460, 921600, 0xab818b8a
0, 102240, 921600, 0xab818b8a
0, 115020, 921600, 0xab818b8a
0, 127800, 921600, 0xad5ad11c
0, 140580, 921600, 0xe6e50f8c
0, 153360, 921600, 0x9f127099

@ -1,15 +1,15 @@
0, 0, 65024, 0x54831a1a
0, 9000, 65024, 0x110f5bad
0, 18000, 65024, 0xdd4f97fa
0, 27000, 65024, 0x1ab375b2
0, 36000, 65024, 0x311b51d3
0, 45000, 65024, 0xb0614f71
0, 54000, 65024, 0x6d968927
0, 63000, 65024, 0x28d85028
0, 72000, 65024, 0x74ea41f5
0, 81000, 65024, 0x3480b067
0, 90000, 65024, 0x3e1115d4
0, 99000, 65024, 0x0c715b57
0, 108000, 65024, 0x3acaaea3
0, 117000, 65024, 0x1b60f1e8
0, 126000, 65024, 0xcee14632
0, 0, 192000, 0x9754890f
0, 9000, 192000, 0x01668965
0, 18000, 192000, 0xbd1b5e12
0, 27000, 192000, 0x2e97fb9f
0, 36000, 192000, 0xf8b452e2
0, 45000, 192000, 0xc6859449
0, 54000, 192000, 0x910844f7
0, 63000, 192000, 0x99443581
0, 72000, 192000, 0xec52d1e5
0, 81000, 192000, 0x2fc66c35
0, 90000, 192000, 0xd9af7379
0, 99000, 192000, 0x947a26ef
0, 108000, 192000, 0x7b77ab28
0, 117000, 192000, 0x2507637e
0, 126000, 192000, 0x6ce8c0ea

@ -1,12 +1,12 @@
0, 0, 65024, 0x190f2398
0, 6390, 65024, 0x19d8c3e0
0, 12780, 65024, 0x848020a2
0, 19170, 65024, 0xbb64696f
0, 25560, 65024, 0x85886472
0, 31950, 65024, 0xc9c26668
0, 38340, 65024, 0xf24d1524
0, 44730, 65024, 0x64d98cd0
0, 51120, 65024, 0xa1323b5e
0, 57510, 65024, 0x9f48dcf9
0, 63900, 65024, 0x1a0591da
0, 70290, 65024, 0x8eabf12e
0, 0, 192000, 0xb718dc63
0, 6390, 192000, 0x2efb7b89
0, 12780, 192000, 0x70827047
0, 19170, 192000, 0x61e1fd2f
0, 25560, 192000, 0x06f8bccd
0, 31950, 192000, 0xf0362404
0, 38340, 192000, 0xc00fc1b8
0, 44730, 192000, 0x94265476
0, 51120, 192000, 0x4b50ad23
0, 57510, 192000, 0x4d578b60
0, 63900, 192000, 0xfb14b875
0, 70290, 192000, 0x81682338

@ -1,12 +1,12 @@
0, 0, 3648, 0xb6174031
0, 6390, 3648, 0x2e4649b0
0, 12780, 3648, 0xe05247cb
0, 19170, 3648, 0x003941f0
0, 25560, 3648, 0xa2563fed
0, 31950, 3648, 0x23d34cf1
0, 38340, 3648, 0x624f5173
0, 44730, 3648, 0xc07a491e
0, 51120, 3648, 0x74214090
0, 57510, 3648, 0xebfd469c
0, 63900, 3648, 0x60083f49
0, 70290, 3648, 0x6096486f
0, 0, 7866, 0xab73dae7
0, 6390, 7866, 0x100adec8
0, 12780, 7866, 0x1a20ddfa
0, 19170, 7866, 0xc358cd16
0, 25560, 7866, 0xee0bd20e
0, 31950, 7866, 0xef26bef9
0, 38340, 7866, 0xa9d0c755
0, 44730, 7866, 0x6c11cc7c
0, 51120, 7866, 0x4d6ed988
0, 57510, 7866, 0x9965cf24
0, 63900, 7866, 0x9a12db24
0, 70290, 7866, 0x2e85cfeb

@ -1,36 +1,36 @@
0, 0, 45932, 0xf9bc2e69
0, 6390, 45932, 0x5b8736ad
0, 12780, 45932, 0x4521ba17
0, 19170, 45932, 0xf3a374a9
0, 25560, 45932, 0x3fdfdc70
0, 31950, 45932, 0x4eb18dbb
0, 38340, 45932, 0x633c6377
0, 44730, 45932, 0x77dce8ba
0, 51120, 45932, 0x8246fecd
0, 57510, 45932, 0xe8864c0d
0, 63900, 45932, 0x995740d1
0, 70290, 45932, 0xc8a298ee
0, 76680, 45932, 0xa3535672
0, 83070, 45932, 0xb553f58b
0, 89460, 45932, 0x8a5b3b92
0, 95850, 45932, 0x1bcd50b0
0, 102240, 45932, 0xf22b0531
0, 108630, 45932, 0x5f62bc78
0, 115020, 45932, 0xc669075f
0, 121410, 45932, 0xae3b4e80
0, 127800, 45932, 0x3f52062f
0, 134190, 45932, 0xde97a978
0, 140580, 45932, 0x3ba7ca71
0, 146970, 45932, 0xe418aba1
0, 153360, 45932, 0xb8b3f24b
0, 159750, 45932, 0xd054791d
0, 166140, 45932, 0xddf121ce
0, 172530, 45932, 0xf0dcdd42
0, 178920, 45932, 0xd5aa9281
0, 185310, 45932, 0xffe8450b
0, 191700, 45932, 0x84f9424a
0, 198090, 45932, 0xe6c7592e
0, 204480, 45932, 0xc29c492d
0, 210870, 45932, 0x87186732
0, 217260, 45932, 0x02c73e12
0, 223650, 45932, 0x32eb90c8
0, 0, 134724, 0x53784ca9
0, 6390, 134724, 0x14c345b7
0, 12780, 134724, 0xe0d0dd51
0, 19170, 134724, 0xd53b5610
0, 25560, 134724, 0x7cbb8d47
0, 31950, 134724, 0x875d67c4
0, 38340, 134724, 0x9811c085
0, 44730, 134724, 0x25f6d228
0, 51120, 134724, 0x349495a0
0, 57510, 134724, 0xd0d75311
0, 63900, 134724, 0xb49cdfbb
0, 70290, 134724, 0x9fa69518
0, 76680, 134724, 0x28a1f58c
0, 83070, 134724, 0xb8dab657
0, 89460, 134724, 0x8c7e3b3b
0, 95850, 134724, 0x37268acf
0, 102240, 134724, 0xcce8ca02
0, 108630, 134724, 0xe0fd0c28
0, 115020, 134724, 0x5bdac906
0, 121410, 134724, 0xdd850bf0
0, 127800, 134724, 0x2002a228
0, 134190, 134724, 0x633617ea
0, 140580, 134724, 0x2a3ef337
0, 146970, 134724, 0x507886c3
0, 153360, 134724, 0x51c0f07b
0, 159750, 134724, 0x5e73dce1
0, 166140, 134724, 0x26acc6f0
0, 172530, 134724, 0x360c4349
0, 178920, 134724, 0xc7dbabd4
0, 185310, 134724, 0x671bbf66
0, 191700, 134724, 0x4d44df79
0, 198090, 134724, 0x69eade5b
0, 204480, 134724, 0x2b1bca82
0, 210870, 134724, 0x8b16af47
0, 217260, 134724, 0xb59fa1bd
0, 223650, 134724, 0x2ec17c24

@ -1,6 +1,6 @@
0, 0, 77076, 0x33b3bf99
0, 6390, 77076, 0xde70a282
0, 12780, 77076, 0x8d4c10a4
0, 19170, 77076, 0xeb536bcc
0, 25560, 77076, 0x86cce3e8
0, 31950, 77076, 0x292df285
0, 0, 228150, 0xde68df49
0, 6390, 228150, 0x8e12bcaf
0, 12780, 228150, 0x851b04f7
0, 19170, 228150, 0x7e5e0950
0, 25560, 228150, 0x1d92219f
0, 31950, 228150, 0x93caa693

Loading…
Cancel
Save