Set codec id in case another codec is forced on the context (e.g. when
the user specify the codec with -codec).
For example fix:
ffplay -vcodec pgmyuv -i "tests/vsynth1/%02d.pgm"
Fail with a meaningfull error message in case of bogus input.
Also the new options are more consistent with the rest of the tool
options, since it does not support generic stream specifiers.
Now it should work for the timestamp based and the byte based case as well.
Also only update the external clock if the seeking was successful.
Signed-off-by: Marton Balint <cus@passwd.hu>
In timestamp based seeking we update the external clock to the seek target,
therefore we should use sane timestamps even if libavformat could handle
seeking before the start of the file.
Signed-off-by: Marton Balint <cus@passwd.hu>
Otherwise playing the video could be much slower than realtime if the system
can't decode or display the frames fast enough.
Signed-off-by: Marton Balint <cus@passwd.hu>
The real av_sync_type may be different to VideoState->av_sync_type, because the
required audio or video stream for audio or video clock may not be available.
We will use a function to query the real av_sync_type which is used for
determining the master clock.
Signed-off-by: Marton Balint <cus@passwd.hu>
The purpose of the serial field is to accompany the decoded data during the
decoding process to know if the decoded data belongs to the data stream after
the latest packet queue flush.
Signed-off-by: Marton Balint <cus@passwd.hu>
We now initalize the external clock to 0 and, we use the system clock to
regulate the timings of audio and video in external clock sync mode. We
recover from external clock sync loss, when the delay to external clock is
bigger than AV_NOSYNC_THRESHOLD.
Signed-off-by: Marton Balint <cus@passwd.hu>
A decoded and resampled audio frame may not fit in the current size which is
not handled by the current code causing out of order waveform displays or even
channel mixups. A todo is added because this part can certainly be improved to
consume less memory but work reliably for any frame size.
Signed-off-by: Marton Balint <cus@passwd.hu>
It was theoretically possible for pictq_prev_picture to fill the picture queue
which may have caused problems when a write to the queue was still in progress.
Signed-off-by: Marton Balint <cus@passwd.hu>
This also makes sure the aspect ratio of the picture is set before allocating
the picture, this way video_open can calculate with the correct aspect ratio
even for the first frame.
Signed-off-by: Marton Balint <cus@passwd.hu>
Freeing it in the end of the video thread is not a good idea, because we still
may need the filter names for the next video thread, in order to apply the
filters after chaning the video stream.
Signed-off-by: Marton Balint <cus@passwd.hu>
When the audio queue was empty, it was not filled until the 10ms delay expired
in the read thread. This patch changes the delay method with a condition wait,
which reacts to an empty queue a lot faster, therefore the audio buffer
underruns become less common especially after seeking.
Signed-off-by: Marton Balint <cus@passwd.hu>
It appears this function is not available everywhere
Should fix Ticket1525
Reviewed-by: Marton Balint <cus@passwd.hu>
Signed-off-by: Michael Niedermayer <michaelni@gmx.at>