#include "config.h"
#include <inttypes.h>
#include <math.h>
#include <limits.h>
#include "libavutil/avstring.h"
#include "libavutil/colorspace.h"
#include "libavutil/mathematics.h"
#include "libavutil/pixdesc.h"
#include "libavutil/imgutils.h"
#include "libavutil/dict.h"
#include "libavutil/parseutils.h"
#include "libavutil/samplefmt.h"
#include "libavformat/avformat.h"
#include "libavdevice/avdevice.h"
#include "libswscale/swscale.h"
#include "libavcodec/audioconvert.h"
#include "libavutil/opt.h"
#include "libavcodec/avfft.h"
#include "cmdutils.h"
#include <SDL.h>
#include <SDL_thread.h>
#include <unistd.h>
#include <assert.h>
#include "cmdutils_common_opts.h"
Go to the source code of this file.
Data Structures | |
struct | PacketQueue |
struct | VideoPicture |
struct | SubPicture |
struct | VideoState |
Macros | |
#define | MAX_QUEUE_SIZE (15 * 1024 * 1024) |
#define | MIN_AUDIOQ_SIZE (20 * 16 * 1024) |
#define | MIN_FRAMES 5 |
#define | SDL_AUDIO_BUFFER_SIZE 1024 |
#define | AV_SYNC_THRESHOLD 0.01 |
#define | AV_NOSYNC_THRESHOLD 10.0 |
#define | FRAME_SKIP_FACTOR 0.05 |
#define | SAMPLE_CORRECTION_PERCENT_MAX 10 |
#define | AUDIO_DIFF_AVG_NB 20 |
#define | SAMPLE_ARRAY_SIZE (2 * 65536) |
#define | VIDEO_PICTURE_QUEUE_SIZE 2 |
#define | SUBPICTURE_QUEUE_SIZE 4 |
#define | FF_ALLOC_EVENT (SDL_USEREVENT) |
#define | FF_REFRESH_EVENT (SDL_USEREVENT + 1) |
#define | FF_QUIT_EVENT (SDL_USEREVENT + 2) |
#define | ALPHA_BLEND(a, oldp, newp, s) ((((oldp << s) * (255 - (a))) + (newp * (a))) / (255 << s)) |
#define | RGBA_IN(r, g, b, a, s) |
#define | YUVA_IN(y, u, v, a, s, pal) |
#define | YUVA_OUT(d, y, u, v, a) |
#define | BPP 1 |
Typedefs | |
typedef struct PacketQueue | PacketQueue |
typedef struct VideoPicture | VideoPicture |
typedef struct SubPicture | SubPicture |
typedef struct VideoState | VideoState |
Enumerations | |
enum | { AV_SYNC_AUDIO_MASTER, AV_SYNC_VIDEO_MASTER, AV_SYNC_EXTERNAL_CLOCK } |
Functions | |
static void | show_help (void) |
void | exit_program (int ret) |
Do all the necessary cleanup and abort. | |
static int | packet_queue_put (PacketQueue *q, AVPacket *pkt) |
static void | packet_queue_init (PacketQueue *q) |
static void | packet_queue_flush (PacketQueue *q) |
static void | packet_queue_end (PacketQueue *q) |
static void | packet_queue_abort (PacketQueue *q) |
static int | packet_queue_get (PacketQueue *q, AVPacket *pkt, int block) |
static void | fill_rectangle (SDL_Surface *screen, int x, int y, int w, int h, int color) |
static void | blend_subrect (AVPicture *dst, const AVSubtitleRect *rect, int imgw, int imgh) |
static void | free_subpicture (SubPicture *sp) |
static void | video_image_display (VideoState *is) |
static int | audio_write_get_buf_size (VideoState *is) |
static int | compute_mod (int a, int b) |
static void | video_audio_display (VideoState *s) |
static int | video_open (VideoState *is) |
static void | video_display (VideoState *is) |
static int | refresh_thread (void *opaque) |
static double | get_audio_clock (VideoState *is) |
static double | get_video_clock (VideoState *is) |
static double | get_external_clock (VideoState *is) |
static double | get_master_clock (VideoState *is) |
static void | stream_seek (VideoState *is, int64_t pos, int64_t rel, int seek_by_bytes) |
static void | stream_pause (VideoState *is) |
static double | compute_target_time (double frame_current_pts, VideoState *is) |
static void | video_refresh_timer (void *opaque) |
static void | stream_close (VideoState *is) |
static void | do_exit (void) |
static void | alloc_picture (void *opaque) |
static int | queue_picture (VideoState *is, AVFrame *src_frame, double pts, int64_t pos) |
static int | output_picture2 (VideoState *is, AVFrame *src_frame, double pts1, int64_t pos) |
compute the exact PTS for the picture if it is omitted in the stream | |
static int | get_video_frame (VideoState *is, AVFrame *frame, int64_t *pts, AVPacket *pkt) |
static int | video_thread (void *arg) |
static int | subtitle_thread (void *arg) |
static void | update_sample_display (VideoState *is, short *samples, int samples_size) |
static int | synchronize_audio (VideoState *is, short *samples, int samples_size1, double pts) |
static int | audio_decode_frame (VideoState *is, double *pts_ptr) |
static void | sdl_audio_callback (void *opaque, Uint8 *stream, int len) |
static int | stream_component_open (VideoState *is, int stream_index) |
static void | stream_component_close (VideoState *is, int stream_index) |
static int | decode_interrupt_cb (void *ctx) |
static int | decode_thread (void *arg) |
static VideoState * | stream_open (const char *filename, AVInputFormat *iformat) |
static void | stream_cycle_channel (VideoState *is, int codec_type) |
static void | toggle_full_screen (void) |
static void | toggle_pause (void) |
static void | step_to_next_frame (void) |
static void | toggle_audio_display (void) |
static void | event_loop (void) |
static int | opt_frame_size (const char *opt, const char *arg) |
static int | opt_width (const char *opt, const char *arg) |
static int | opt_height (const char *opt, const char *arg) |
static int | opt_format (const char *opt, const char *arg) |
static int | opt_frame_pix_fmt (const char *opt, const char *arg) |
static int | opt_sync (const char *opt, const char *arg) |
static int | opt_seek (const char *opt, const char *arg) |
static int | opt_duration (const char *opt, const char *arg) |
static int | opt_debug (const char *opt, const char *arg) |
static int | opt_vismv (const char *opt, const char *arg) |
static void | show_usage (void) |
static void | opt_input_file (void *optctx, const char *filename) |
int | main (int argc, char **argv) |
Variables | |
const char | program_name [] = "avplay" |
program name, defined by the program for show_version(). | |
const int | program_birth_year = 2003 |
program birth year, defined by the program for show_banner() | |
static int | sws_flags = SWS_BICUBIC |
static AVInputFormat * | file_iformat |
static const char * | input_filename |
static const char * | window_title |
static int | fs_screen_width |
static int | fs_screen_height |
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] |
static int | seek_by_bytes = -1 |
static int | display_disable |
static int | show_status = 1 |
static int | av_sync_type = AV_SYNC_AUDIO_MASTER |
static int64_t | start_time = AV_NOPTS_VALUE |
static int64_t | duration = AV_NOPTS_VALUE |
static int | debug = 0 |
static int | debug_mv = 0 |
static int | step = 0 |
static int | workaround_bugs = 1 |
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 int | error_recognition = FF_ER_CAREFUL |
static int | error_concealment = 3 |
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 | rdftspeed = 20 |
static int | is_full_screen |
static VideoState * | cur_stream |
static int64_t | audio_callback_time |
static AVPacket | flush_pkt |
static SDL_Surface * | screen |
static VideoState * | global_video_state |
static const OptionDef | options [] |
#define ALPHA_BLEND | ( | a, | |
oldp, | |||
newp, | |||
s | |||
) | ((((oldp << s) * (255 - (a))) + (newp * (a))) / (255 << s)) |
Definition at line 410 of file avplay.c.
Referenced by blend_subrect().
#define AUDIO_DIFF_AVG_NB 20 |
Definition at line 80 of file avplay.c.
Referenced by stream_component_open(), and synchronize_audio().
#define AV_NOSYNC_THRESHOLD 10.0 |
Definition at line 72 of file avplay.c.
Referenced by compute_target_time(), and synchronize_audio().
#define AV_SYNC_THRESHOLD 0.01 |
Definition at line 70 of file avplay.c.
Referenced by compute_target_time().
#define BPP 1 |
Definition at line 437 of file avplay.c.
Referenced by blend_subrect().
#define FF_ALLOC_EVENT (SDL_USEREVENT) |
Definition at line 274 of file avplay.c.
Referenced by event_loop(), and queue_picture().
#define FF_QUIT_EVENT (SDL_USEREVENT + 2) |
Definition at line 276 of file avplay.c.
Referenced by decode_thread(), and event_loop().
#define FF_REFRESH_EVENT (SDL_USEREVENT + 1) |
Definition at line 275 of file avplay.c.
Referenced by event_loop(), and refresh_thread().
#define FRAME_SKIP_FACTOR 0.05 |
Definition at line 74 of file avplay.c.
Referenced by queue_picture(), and video_refresh_timer().
#define MAX_QUEUE_SIZE (15 * 1024 * 1024) |
Definition at line 61 of file avplay.c.
Referenced by decode_thread().
#define MIN_AUDIOQ_SIZE (20 * 16 * 1024) |
Definition at line 62 of file avplay.c.
Referenced by decode_thread().
#define MIN_FRAMES 5 |
Definition at line 63 of file avplay.c.
Referenced by decode_thread().
Definition at line 413 of file avplay.c.
Referenced by subtitle_thread().
#define SAMPLE_ARRAY_SIZE (2 * 65536) |
Definition at line 83 of file avplay.c.
Referenced by update_sample_display(), and video_audio_display().
#define SAMPLE_CORRECTION_PERCENT_MAX 10 |
Definition at line 77 of file avplay.c.
Referenced by synchronize_audio().
#define SDL_AUDIO_BUFFER_SIZE 1024 |
Definition at line 67 of file avplay.c.
Referenced by stream_component_open().
#define SUBPICTURE_QUEUE_SIZE 4 |
Definition at line 97 of file avplay.c.
Referenced by subtitle_thread(), and video_refresh_timer().
#define VIDEO_PICTURE_QUEUE_SIZE 2 |
Definition at line 96 of file avplay.c.
Referenced by get_video_frame(), queue_picture(), stream_close(), toggle_full_screen(), and video_refresh_timer().
#define YUVA_IN | ( | y, | |
u, | |||
v, | |||
a, | |||
s, | |||
pal | |||
) |
Definition at line 422 of file avplay.c.
Referenced by blend_subrect().
#define YUVA_OUT | ( | d, | |
y, | |||
u, | |||
v, | |||
a | |||
) |
Definition at line 431 of file avplay.c.
Referenced by subtitle_thread().
typedef struct PacketQueue PacketQueue |
typedef struct SubPicture SubPicture |
typedef struct VideoPicture VideoPicture |
typedef struct VideoState VideoState |
anonymous enum |
Definition at line 1272 of file avplay.c.
Referenced by event_loop(), and open_video().
|
static |
Definition at line 2007 of file avplay.c.
Referenced by sdl_audio_callback().
|
static |
Definition at line 723 of file avplay.c.
Referenced by get_audio_clock(), and video_audio_display().
|
static |
Definition at line 439 of file avplay.c.
Referenced by video_image_display().
|
inlinestatic |
Definition at line 728 of file avplay.c.
Referenced by video_audio_display().
|
static |
Definition at line 1036 of file avplay.c.
Referenced by queue_picture().
|
static |
Definition at line 2348 of file avplay.c.
Referenced by decode_thread().
|
static |
Definition at line 2354 of file avplay.c.
Referenced by stream_open().
Definition at line 1252 of file avplay.c.
Referenced by alloc_picture(), and event_loop().
void exit_program | ( | int | ret | ) |
|
inlinestatic |
Definition at line 399 of file avplay.c.
Referenced by decode_cabac_luma_residual(), decode_cabac_residual_internal(), decode_cabac_residual_nondc(), decode_luma_residual(), decode_mb(), ff_h264_decode_mb_cabac(), ff_h264_decode_mb_cavlc(), fill_decode_caches(), fill_filter_caches_inter(), hl_decode_mb_444_internal(), hl_decode_mb_internal(), pred_pskip_motion(), pred_spatial_direct_motion(), pred_temp_direct_motion(), rv34_decode_inter_macroblock(), rv34_decode_inter_mb_header(), rv34_decode_intra_macroblock(), rv34_decode_intra_mb_header(), rv34_output_intra(), svq3_mc_dir(), toggle_audio_display(), video_audio_display(), write_back_motion(), and ZERO8x2().
|
static |
Definition at line 639 of file avplay.c.
Referenced by video_refresh_timer().
|
static |
Definition at line 955 of file avplay.c.
Referenced by get_master_clock(), synchronize_audio(), and video_refresh_timer().
|
static |
Definition at line 982 of file avplay.c.
Referenced by get_master_clock().
|
static |
Definition at line 990 of file avplay.c.
Referenced by compute_target_time(), event_loop(), synchronize_audio(), and video_refresh_timer().
|
static |
Definition at line 972 of file avplay.c.
Referenced by compute_target_time(), get_master_clock(), and video_refresh_timer().
|
static |
Definition at line 1463 of file avplay.c.
Referenced by video_thread().
|
static |
|
static |
|
static |
|
static |
|
static |
|
static |
|
static |
|
static |
|
static |
|
static |
|
static |
compute the exact PTS for the picture if it is omitted in the stream
pts1 | the dts of the pkt / pts of the frame |
Definition at line 1441 of file avplay.c.
Referenced by video_thread().
|
static |
Definition at line 352 of file avplay.c.
Referenced by stream_component_close().
|
static |
Definition at line 313 of file avplay.c.
Referenced by stream_component_close().
|
static |
Definition at line 296 of file avplay.c.
Referenced by decode_thread(), and packet_queue_end().
|
static |
Definition at line 364 of file avplay.c.
Referenced by audio_decode_frame(), get_video_frame(), and subtitle_thread().
|
static |
Definition at line 288 of file avplay.c.
Referenced by stream_component_open().
|
static |
Definition at line 320 of file avplay.c.
Referenced by decode_thread(), and packet_queue_init().
|
static |
pts | the dts of the pkt / pts of the frame and guessed if not known |
Definition at line 1318 of file avplay.c.
Referenced by output_picture2().
|
static |
Definition at line 938 of file avplay.c.
Referenced by decode_thread().
Definition at line 2130 of file avplay.c.
Referenced by stream_component_open().
Definition at line 3002 of file avplay.c.
Referenced by main(), and show_help().
Definition at line 2710 of file avplay.c.
Referenced by event_loop().
|
static |
|
static |
Definition at line 2261 of file avplay.c.
Referenced by decode_thread(), and stream_cycle_channel().
|
static |
Definition at line 2165 of file avplay.c.
Referenced by decode_thread(), and stream_cycle_channel().
|
static |
Definition at line 2641 of file avplay.c.
Referenced by event_loop().
|
static |
|
static |
Definition at line 1024 of file avplay.c.
Referenced by step_to_next_frame(), toggle_pause(), and video_thread().
|
static |
Definition at line 1011 of file avplay.c.
Referenced by decode_thread(), and event_loop().
|
static |
Definition at line 1843 of file avplay.c.
Referenced by stream_component_open().
|
static |
Definition at line 1933 of file avplay.c.
Referenced by sdl_audio_callback().
Definition at line 2720 of file avplay.c.
Referenced by event_loop().
Definition at line 2691 of file avplay.c.
Referenced by event_loop().
Definition at line 2703 of file avplay.c.
Referenced by event_loop().
|
static |
Definition at line 1913 of file avplay.c.
Referenced by sdl_audio_callback().
|
static |
Definition at line 737 of file avplay.c.
Referenced by video_display().
|
static |
Definition at line 928 of file avplay.c.
Referenced by video_refresh_timer().
|
static |
Definition at line 644 of file avplay.c.
Referenced by video_display().
|
static |
Definition at line 876 of file avplay.c.
Referenced by event_loop(), toggle_full_screen(), and video_display().
Definition at line 1077 of file avplay.c.
Referenced by event_loop().
|
static |
Definition at line 1753 of file avplay.c.
Referenced by stream_component_open().
|
static |
Definition at line 270 of file avplay.c.
Referenced by sdl_audio_callback(), and video_audio_display().
|
static |
Definition at line 229 of file avplay.c.
Referenced by decode_thread().
|
static |
Definition at line 256 of file avplay.c.
Referenced by decode_thread().
|
static |
Definition at line 239 of file avplay.c.
Referenced by opt_sync(), and stream_open().
|
static |
|
static |
Definition at line 242 of file avplay.c.
Referenced by opt_debug(), and stream_component_open().
|
static |
Definition at line 243 of file avplay.c.
Referenced by opt_vismv(), and stream_component_open().
|
static |
Definition at line 255 of file avplay.c.
Referenced by get_video_frame().
|
static |
Definition at line 237 of file avplay.c.
Referenced by decode_thread(), main(), and video_refresh_timer().
|
static |
Definition at line 241 of file avplay.c.
Referenced by applehttp_read_header(), applehttp_read_seek(), asf_write_header1(), asf_write_packet(), avformat_find_stream_info(), decode_thread(), estimate_timings_from_bit_rate(), estimate_timings_from_pts(), ff_ass_add_rect(), ffm_read_packet(), init_common(), main(), matroska_parse_block(), mkv_write_ass_blocks(), mkv_write_packet_internal(), mkv_write_srt_blocks(), mov_read_ctts(), mov_read_elst(), mov_read_stts(), mov_write_ctts_tag(), mov_write_edts_tag(), mov_write_stts_tag(), mov_write_tkhd_tag(), nsv_parse_NSVf_header(), opt_duration(), parse_playlist(), qdm2_decode_fft_packets(), qdm2_fft_decode_tones(), qdm2_fft_init_coefficient(), read_braindead_odml_indx(), rm_read_header(), rv10_write_header(), smjpeg_read_header(), srt_get_duration(), and update_stream_timings().
|
static |
Definition at line 254 of file avplay.c.
Referenced by stream_component_open().
|
static |
Definition at line 253 of file avplay.c.
Referenced by stream_component_open().
|
static |
Definition at line 257 of file avplay.c.
Referenced by event_loop().
|
static |
Definition at line 258 of file avplay.c.
Referenced by event_loop().
|
static |
Definition at line 246 of file avplay.c.
Referenced by stream_component_open().
|
static |
Definition at line 222 of file avplay.c.
Referenced by opt_input_file().
|
static |
Definition at line 260 of file avplay.c.
Referenced by video_refresh_timer().
|
static |
Definition at line 226 of file avplay.c.
Referenced by main(), and video_open().
|
static |
Definition at line 225 of file avplay.c.
Referenced by main(), and video_open().
|
static |
Definition at line 247 of file avplay.c.
Referenced by av_read_frame(), and decode_thread().
|
static |
|
static |
Definition at line 249 of file avplay.c.
Referenced by stream_component_open().
|
static |
Definition at line 223 of file avplay.c.
Referenced by main(), open_input_stream(), opt_input_file(), and video_open().
|
static |
Definition at line 268 of file avplay.c.
Referenced by toggle_full_screen(), and video_open().
|
static |
Definition at line 259 of file avplay.c.
Referenced by decode_thread().
|
static |
Definition at line 248 of file avplay.c.
Referenced by chroma_4mv_motion_lowres(), hpel_motion_lowres(), mpeg_decode_slice(), mpeg_motion_lowres(), MPV_motion_lowres(), and stream_component_open().
const int program_birth_year = 2003 |
program birth year, defined by the program for show_banner()
const char program_name[] = "avplay" |
program name, defined by the program for show_version().
|
static |
Definition at line 262 of file avplay.c.
Referenced by refresh_thread().
|
static |
Definition at line 278 of file avplay.c.
Referenced by alloc_picture(), event_loop(), toggle_audio_display(), video_audio_display(), video_display(), video_open(), x11grab_draw_region_win(), x11grab_read_header(), x11grab_read_packet(), and x11grab_region_win_init().
|
static |
Definition at line 228 of file avplay.c.
Referenced by event_loop(), opt_height(), and video_open().
|
static |
Definition at line 227 of file avplay.c.
Referenced by event_loop(), opt_width(), and video_open().
|
static |
Definition at line 236 of file avplay.c.
Referenced by decode_thread(), and event_loop().
|
static |
Definition at line 238 of file avplay.c.
Referenced by decode_thread(), do_exit(), and video_refresh_timer().
|
static |
Definition at line 250 of file avplay.c.
Referenced by stream_component_open().
|
static |
Definition at line 251 of file avplay.c.
Referenced by MPV_decode_mb_internal(), and stream_component_open().
|
static |
Definition at line 252 of file avplay.c.
Referenced by stream_component_open(), and update_context_from_user().
|
static |
Definition at line 240 of file avplay.c.
Referenced by asf_read_stream_properties(), decode_thread(), gxf_seek(), main(), opt_seek(), rm_read_header(), skeleton_header(), and update_stream_timings().
|
static |
Definition at line 244 of file avplay.c.
Referenced by adpcm_compress_trellis(), adpcm_decode_frame(), adpcm_ima_expand_nibble(), adpcm_ima_qt_compress_sample(), adpcm_ima_qt_expand_nibble(), av_read_image_line(), av_write_image_line(), build_requant_tab(), dec_gain(), decode_plane(), decode_subframe(), do_a_deblock_C(), do_a_deblock_TMPL(), draw_slice(), encode_residual_ch(), eval_lpcenv_or_interp(), ff_gen_search(), ff_gen_syncpoint_search(), fraps2_decode_plane(), h264_filter_mb_fast_internal(), init_pass2(), interpolate(), is_mv_diff_gt_3(), loco_decode_plane(), loco_predict(), restore_median(), restore_median_il(), restore_rgb_planes(), rv30_weak_loop_filter(), rv40_loop_filter_strength(), rv40_strong_loop_filter(), rv40_weak_loop_filter(), sbr_qmf_synthesis(), search_for_quantizers_faac(), step_to_next_frame(), toggle_pause(), video_thread(), vorbis_residue_decode_internal(), and yuv2rgb_full_X_c_template().
|
static |
Definition at line 85 of file avplay.c.
Referenced by queue_picture().
|
static |
Definition at line 230 of file avplay.c.
Referenced by decode_thread(), and main().
|
static |
Definition at line 231 of file avplay.c.
Referenced by decode_thread().
|
static |
Definition at line 224 of file avplay.c.
Referenced by video_open().
|
static |
Definition at line 245 of file avplay.c.
Referenced by stream_component_open().