Commit Graph

855 Commits

Author SHA1 Message Date
Marton Balint
e281671e21 ffplay: decrease audio_diff_threshold
Since audio clock calculations are more accurate now, it is safe to decrease
the sync treshold to compensate the larger buffers caused by less frequent
audio callbacks.

Signed-off-by: Marton Balint <cus@passwd.hu>
2014-06-24 21:59:21 +02:00
Marton Balint
371f02388c ffplay: decrease max audio callbacks per second
Too many audio callbacks per second can cause buffer underruns especially under
load. As now we take into accound the elapsed time after an audio callback when
determining current audio clock, it is not that important to use small buffer
sizes and frequent audio callbacks, so lets remove the comment.

Signed-off-by: Marton Balint <cus@passwd.hu>
2014-06-24 21:59:21 +02:00
Marton Balint
1ca5c1784b ffplay: calculate SDL audio buffer size based on sample rate
Signed-off-by: Marton Balint <cus@passwd.hu>
2014-06-24 21:59:21 +02:00
Marton Balint
ba800defa7 ffplay: pass simple integers to calculate_display_rect and set_default_window_size
No change in functionality.

Signed-off-by: Marton Balint <cus@passwd.hu>
2014-06-24 21:59:21 +02:00
Marton Balint
9dd97aa3d3 ffplay: eliminate pictq_prev_picture
Instead of directly rolling back the frame queue, keep the last displayed
picture in the queue and use a boolean variable to keep track if it is
displayed or not. This makes the code cleaner because it removes the
complicated logic in pictq_prev_picture.

There should be no change in functionality.

Signed-off-by: Marton Balint <cus@passwd.hu>
2014-06-24 21:59:20 +02:00
Michael Niedermayer
a50c6f99b4 ffplay: remove -ec handling code
Its handled by the generic option code

Signed-off-by: Michael Niedermayer <michaelni@gmx.at>
2014-06-17 17:31:29 +02:00
Clément Bœsch
08c51e12b1 ffplay: support rotated video.
with -f lavfi -i testsrc=s=hd1080 as source:
  rotate=90*PI/180  vs transpose=clock:   42fps -> 64fps
  rotate=180*PI/180 vs vflip,hflip:       75fps -> 77fps
  rotate=270*PI/180 vs transpose=cclock:  43fps -> 63fps
2014-05-23 23:30:21 +02:00
Olivier Langlois
0ca0b4c29c ffplay: Use av_gettime_relative()
Whenever av_gettime() is used to measure relative period of time,
av_gettime_relative() is prefered as it guarantee monotonic time
on supported platforms.

Signed-off-by: Olivier Langlois <olivier@trillion01.com>
Reviewed-by: Marton Balint <cus@passwd.hu>
Signed-off-by: Michael Niedermayer <michaelni@gmx.at>
2014-05-17 20:28:16 +02:00
Marton Balint
a583e2bebe ffplay: add support for toggling between multiple video filters with the w key
Signed-off-by: Marton Balint <cus@passwd.hu>
2014-05-17 13:18:29 +02:00
Marton Balint
0c8d8c0c80 ffplay: try multiple sample rates if audio open fails
Should fix ticket #3509.

Signed-off-by: Marton Balint <cus@passwd.hu>
2014-05-17 13:18:29 +02:00
John Peebles
e11697759d cmdutils: replace usages of "#ifdef __MINGW32__" with "#ifdef _WIN32" because MSVC only defines _WIN32
With the previous patch, this should fix ticket #3580 as well.

Signed-off-by: John Peebles <johnpeeb@gmail.com>
2014-05-17 13:18:29 +02:00
Marton Balint
1fab67b685 ffplay: fix compilation with Visual Studio
Based on a patch by achristensen from trac.ffmpeg.org.

Partially fixes ticket #3580.

Signed-off-by: Marton Balint <cus@passwd.hu>
2014-05-17 13:18:28 +02:00
Marton Balint
ae6fe159f2 ffplay: increase AV_SYNC_THRESHOLD_MIN to 0.04
Less than 0.04 sec delays should not be noticable, and it helps us with 50fps
content where some timing errors can cause a frame dup where it is not really
necessary.

Signed-off-by: Marton Balint <cus@passwd.hu>
2014-05-17 13:18:28 +02:00
Michael Niedermayer
ef818d8bf0 avformat: add av_format_inject_global_side_data(), and disable it by default
After this commit applications needs to call av_format_inject_global_side_data()
or handle AVStream side data by some other means if they want it not to be lost.

This fixes a API incompatibility with libav.
libav API does not allow the data to be passed through AVPackets

Signed-off-by: Michael Niedermayer <michaelni@gmx.at>
2014-04-15 02:37:40 +02:00
Michael Niedermayer
774668763a ffplay: display information on stream cycling
Reviewed-by: Marton Balint <cus@passwd.hu>
Signed-off-by: Michael Niedermayer <michaelni@gmx.at>
2014-03-12 00:32:38 +01:00
Michael Niedermayer
6fb8684a24 Merge commit 'b36bc81ccaa2fc85dc4bae7dc546c71e8833573d'
* commit 'b36bc81ccaa2fc85dc4bae7dc546c71e8833573d':
  avplay: add support for seeking to chapter marks

Conflicts:
	doc/ffplay.texi
	ffplay.c

ffplay uses pageup/down for seeking by +-10min
thus this use of the keys conflicts.
The merge thus uses them to seek to chapters when there are some or
+-10min when there are not

Merged-by: Michael Niedermayer <michaelni@gmx.at>
2014-02-10 13:26:31 +01:00
Marton Balint
23e77f0e33 ffplay: flush subtitle codecs as well with null packets
Signed-off-by: Marton Balint <cus@passwd.hu>
2014-02-05 00:00:23 +01:00
Marton Balint
cec6dec7c8 ffplay: reorder the filters to ensure that inputs of the custom filters are merged first
For more info see http://ffmpeg.org/pipermail/ffmpeg-user/2013-December/018761.html

Signed-off-by: Marton Balint <cus@passwd.hu>
2014-02-05 00:00:23 +01:00
Lukasz Marek
9d087ab5ef ffplay: remove redundant prototype
Signed-off-by: Lukasz Marek <lukasz.m.luki@gmail.com>
Signed-off-by: Michael Niedermayer <michaelni@gmx.at>
2014-01-27 13:36:01 +01:00
Marton Balint
ac7b4bfdeb ffplay: do not wait for the picture allocation to finish on exit
When SDL could not allocate a YUV overlay or open a window, the video thread
got locked up because it waited for the allocation to finish forever.

Reported-by: Carl Eugen Hoyos <cehoyos@ag.or.at>
Signed-off-by: Marton Balint <cus@passwd.hu>
2013-12-29 13:19:19 +01:00
Marton Balint
e90aef9195 ffplay: remove two unneeded av_free_packet calls
Signed-off-by: Marton Balint <cus@passwd.hu>
2013-12-29 13:19:19 +01:00
Marton Balint
e3ff6938b5 ffplay: remove some unneded av_frame_unref calls
av_buffersrc_add_frame implicitly unreferences the added frame.

Signed-off-by: Marton Balint <cus@passwd.hu>
2013-12-29 13:19:19 +01:00
Marton Balint
379caaa778 ffplay: remove unneeded avcodec_get_frame_defaults
Signed-off-by: Marton Balint <cus@passwd.hu>
2013-12-29 13:19:19 +01:00
Marton Balint
e37d4920c1 ffplay: use precalculated frame size and bytes per sec values
Signed-off-by: Marton Balint <cus@passwd.hu>
2013-12-29 13:19:19 +01:00
Marton Balint
e98cd24a89 ffplay: precalculate audio output frame size and byte per sec
Signed-off-by: Marton Balint <cus@passwd.hu>
2013-12-29 13:19:18 +01:00
Michael Niedermayer
5a15bd6f2f Merge commit '84f131921ffb43d8070d5680e91f6a24d66ccac4'
* commit '84f131921ffb43d8070d5680e91f6a24d66ccac4':
  avplay: do not call avcodec_get_frame_defaults().

Conflicts:
	ffplay.c

Merged-by: Michael Niedermayer <michaelni@gmx.at>
2013-12-11 23:49:44 +01:00
Marton Balint
ad01fae86d ffplay: set default window size before starting audio
Fixes ticket #2381.

Signed-off-by: Marton Balint <cus@passwd.hu>
2013-12-06 19:57:45 +01:00
Marton Balint
2b377fb4c0 ffplay: factor out function setting default window size
Signed-off-by: Marton Balint <cus@passwd.hu>
2013-12-06 19:57:45 +01:00
Marton Balint
eff4820eb2 ffplay: remove no longer necessary codec flush
It was introduced in c2e8691c07, but since we no
longer no longer provide a custom get_buffer callback, the original cause of
the issue is gone.

Signed-off-by: Marton Balint <cus@passwd.hu>
2013-12-06 19:57:45 +01:00
Marton Balint
318bf57c3f ffplay: do not wait for flushing the picture queue on flush packet
It is no longer necessary. Also do frame timer and video current pos reset in
the main thread because with the wait removed, the timing would not be optimal
in the read thread.

Signed-off-by: Marton Balint <cus@passwd.hu>
2013-12-06 19:57:44 +01:00
Stefano Sabatini
5e1c57f5cb ffplay: do not call avcodec_register_all() explicitly
avcodec_register_all() is implicitly called by av_register_all().
2013-11-25 00:03:20 +01:00
Michael Niedermayer
ccdfa3e271 Merge remote-tracking branch 'qatar/master'
* qatar/master:
  Add missing #includes for *INT64_MAX and *INT64_C

Conflicts:
	ffmpeg.c
	ffmpeg_filter.c
	ffplay.c
	libavformat/assdec.c
	libavformat/avidec.c

Merged-by: Michael Niedermayer <michaelni@gmx.at>
2013-11-24 05:21:19 +01:00
Michael Niedermayer
0ee905e243 Merge commit '5b9c3b4505206143d85398c1410949319fa1180f'
* commit '5b9c3b4505206143d85398c1410949319fa1180f':
  Replace all instances of avcodec_alloc_frame() with av_frame_alloc().

Conflicts:
	doc/examples/decoding_encoding.c
	doc/examples/muxing.c
	ffmpeg.c
	libavcodec/alacenc.c
	libavcodec/libopenjpegenc.c
	libavcodec/libvpxenc.c
	libavcodec/pcm.c
	libavcodec/xbmenc.c
	libavcodec/xwdenc.c
	libavformat/utils.c

Merged-by: Michael Niedermayer <michaelni@gmx.at>
2013-11-16 23:54:10 +01:00
Marton Balint
2803140457 ffplay: calculate last frame duration from vp->pts instead of frame_last_pts
Also do not update current pts on dropped frames, it is no longer necessary.

Fixes regression part of ticket #2507.

Signed-off-by: Marton Balint <cus@passwd.hu>
2013-11-16 14:55:08 +01:00
Marton Balint
02b76aa377 ffplay: simplify early frame drop code
Also never early frame drop the first frame after a flush.

Signed-off-by: Marton Balint <cus@passwd.hu>
2013-11-16 14:55:08 +01:00
Marton Balint
5ecfcc7dff ffplay: add smarter method for determining video picture duration
- consider it an invalid PTS when the next PTS value is the same as the current one
- in case of invalid or unknown PTS, return vp->duration

This fixes ffplay part of ticket #3005.

Signed-off-by: Marton Balint <cus@passwd.hu>
2013-11-05 21:27:07 +01:00
Marton Balint
61dd319770 ffplay: add frame duration estimated from frame rate to VideoPicture
Signed-off-by: Marton Balint <cus@passwd.hu>
2013-11-05 21:27:07 +01:00
Marton Balint
105d4748cf ffplay: avoid code duplication in AVFILTER enabled and disabled case
Signed-off-by: Marton Balint <cus@passwd.hu>
2013-11-05 21:27:06 +01:00
Marton Balint
44758b4d17 ffplay: add support for libswresample options
Signed-off-by: Marton Balint <cus@passwd.hu>
2013-10-26 12:23:54 +02:00
Marton Balint
04de0e04c5 ffplay: use av_frame_get_pkt_pos instead directly accessing pkt pos
Signed-off-by: Marton Balint <cus@passwd.hu>
2013-10-26 12:23:54 +02:00
Marton Balint
2d059d8de1 ffplay: factor out picture freeing code
Signed-off-by: Marton Balint <cus@passwd.hu>
2013-10-26 12:23:54 +02:00
Marton Balint
060c42bc3d ffplay: update and extend documentation for channel and stream switching
Signed-off-by: Marton Balint <cus@passwd.hu>
2013-10-26 12:23:54 +02:00
Marton Balint
3130416aec ffplay: add support for changing the channel by the C key
Signed-off-by: Marton Balint <cus@passwd.hu>
2013-10-13 12:46:14 +02:00
Marton Balint
543d81a707 ffplay: cycle through the streams of the current program, and not every stream
When changing the audio, video or subtitle stream, from now on, ffplay will
cycle through the streams of the current program.

Signed-off-by: Marton Balint <cus@passwd.hu>
2013-10-13 12:31:52 +02:00
Marton Balint
0258e4dc8b ffplay: add null packet after attached pics packet
Fixes ticket #2904.

Signed-off-by: Marton Balint <cus@passwd.hu>
2013-10-13 12:31:52 +02:00
Marton Balint
b118d3e24d ffplay: factor out putting null packet into the queue
Signed-off-by: Marton Balint <cus@passwd.hu>
2013-10-13 12:31:52 +02:00
Michael Niedermayer
c7fe2a3733 ffplay: avoid direct access to lowres use av_codec_g/set_lowres()
Reviewed-by: Marton Balint <cus@passwd.hu>
Signed-off-by: Michael Niedermayer <michaelni@gmx.at>
2013-10-03 22:38:54 +02:00
Michael Niedermayer
b72040daad ffplay: avoid direct access to max_lowres use av_codec_get_max_lowres()
This avoids future ABI issues when the field is moved to the end of the
struct.

Reviewed-by: Marton Balint <cus@passwd.hu>
Signed-off-by: Michael Niedermayer <michaelni@gmx.at>
2013-10-03 22:38:23 +02:00
Michael Niedermayer
5c6a58746b ffplay: make next_nb_channels[] static const
Signed-off-by: Michael Niedermayer <michaelni@gmx.at>
2013-08-24 19:53:11 +02:00
Marton Balint
18be3fac1d ffplay: check for filter EOF return codes
Fixes ticket #2800.

Signed-off-by: Marton Balint <cus@passwd.hu>
2013-08-09 00:16:13 +02:00