FFmpeg
|
#include "config.h"
#include "config_components.h"
#include <inttypes.h>
#include <math.h>
#include <limits.h>
#include <signal.h>
#include <stdint.h>
#include "libavutil/avstring.h"
#include "libavutil/channel_layout.h"
#include "libavutil/eval.h"
#include "libavutil/mathematics.h"
#include "libavutil/pixdesc.h"
#include "libavutil/imgutils.h"
#include "libavutil/dict.h"
#include "libavutil/fifo.h"
#include "libavutil/parseutils.h"
#include "libavutil/samplefmt.h"
#include "libavutil/time.h"
#include "libavutil/bprint.h"
#include "libavformat/avformat.h"
#include "libavdevice/avdevice.h"
#include "libswscale/swscale.h"
#include "libavutil/opt.h"
#include "libavutil/tx.h"
#include "libswresample/swresample.h"
#include "libavfilter/avfilter.h"
#include "libavfilter/buffersink.h"
#include "libavfilter/buffersrc.h"
#include <SDL.h>
#include <SDL_thread.h>
#include "cmdutils.h"
#include "ffplay_renderer.h"
#include "opt_common.h"
Go to the source code of this file.
Data Structures | |
struct | MyAVPacketList |
struct | PacketQueue |
struct | AudioParams |
struct | Clock |
struct | FrameData |
struct | Frame |
struct | FrameQueue |
struct | Decoder |
struct | VideoState |
struct | TextureFormatEntry |
Macros | |
#define | MAX_QUEUE_SIZE (15 * 1024 * 1024) |
#define | MIN_FRAMES 25 |
#define | EXTERNAL_CLOCK_MIN_FRAMES 2 |
#define | EXTERNAL_CLOCK_MAX_FRAMES 10 |
#define | SDL_AUDIO_MIN_BUFFER_SIZE 512 |
#define | SDL_AUDIO_MAX_CALLBACKS_PER_SEC 30 |
#define | SDL_VOLUME_STEP (0.75) |
#define | AV_SYNC_THRESHOLD_MIN 0.04 |
#define | AV_SYNC_THRESHOLD_MAX 0.1 |
#define | AV_SYNC_FRAMEDUP_THRESHOLD 0.1 |
#define | AV_NOSYNC_THRESHOLD 10.0 |
#define | SAMPLE_CORRECTION_PERCENT_MAX 10 |
#define | EXTERNAL_CLOCK_SPEED_MIN 0.900 |
#define | EXTERNAL_CLOCK_SPEED_MAX 1.010 |
#define | EXTERNAL_CLOCK_SPEED_STEP 0.001 |
#define | AUDIO_DIFF_AVG_NB 20 |
#define | REFRESH_RATE 0.01 |
#define | SAMPLE_ARRAY_SIZE (8 * 65536) |
#define | CURSOR_HIDE_DELAY 1000000 |
#define | USE_ONEPASS_SUBTITLE_RENDER 1 |
#define | VIDEO_PICTURE_QUEUE_SIZE 3 |
#define | SUBPICTURE_QUEUE_SIZE 16 |
#define | SAMPLE_QUEUE_SIZE 9 |
#define | FRAME_QUEUE_SIZE FFMAX(SAMPLE_QUEUE_SIZE, FFMAX(VIDEO_PICTURE_QUEUE_SIZE, SUBPICTURE_QUEUE_SIZE)) |
#define | FF_QUIT_EVENT (SDL_USEREVENT + 2) |
#define | INSERT_FILT(name, arg) |
Enumerations | |
enum | { AV_SYNC_AUDIO_MASTER, AV_SYNC_VIDEO_MASTER, AV_SYNC_EXTERNAL_CLOCK } |
Variables | |
const char | program_name [] = "ffplay" |
program name, defined by the program for show_version(). More... | |
const int | program_birth_year = 2003 |
program birth year, defined by the program for show_banner() More... | |
static const AVInputFormat * | file_iformat |
static const char * | input_filename |
static const char * | window_title |
static int | default_width = 640 |
static int | default_height = 480 |
static int | screen_width = 0 |
static int | screen_height = 0 |
static int | screen_left = SDL_WINDOWPOS_CENTERED |
static int | screen_top = SDL_WINDOWPOS_CENTERED |
static int | audio_disable |
static int | video_disable |
static int | subtitle_disable |
static const char * | wanted_stream_spec [AVMEDIA_TYPE_NB] = {0} |
static int | seek_by_bytes = -1 |
static float | seek_interval = 10 |
static int | display_disable |
static int | borderless |
static int | alwaysontop |
static int | startup_volume = 100 |
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 | fast = 0 |
static int | genpts = 0 |
static int | lowres = 0 |
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 | infinite_buffer = -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 |
double | rdftspeed = 0.02 |
static int64_t | cursor_last_shown |
static int | cursor_hidden = 0 |
static const char ** | vfilters_list = NULL |
static int | nb_vfilters = 0 |
static char * | afilters = NULL |
static int | autorotate = 1 |
static int | find_stream_info = 1 |
static int | filter_nbthreads = 0 |
static int | enable_vulkan = 0 |
static char * | vulkan_params = NULL |
static const char * | hwaccel = NULL |
static int | is_full_screen |
static int64_t | audio_callback_time |
static SDL_Window * | window |
static SDL_Renderer * | renderer |
static SDL_RendererInfo | renderer_info = {0} |
static SDL_AudioDeviceID | audio_dev |
static VkRenderer * | vk_renderer |
static const struct TextureFormatEntry | sdl_texture_format_map [] |
static enum AVColorSpace | sdl_supported_color_spaces [] |
static int | dummy |
static const OptionDef | options [] |
simple media player based on the FFmpeg libraries
Definition in file ffplay.c.
#define FRAME_QUEUE_SIZE FFMAX(SAMPLE_QUEUE_SIZE, FFMAX(VIDEO_PICTURE_QUEUE_SIZE, SUBPICTURE_QUEUE_SIZE)) |
anonymous enum |
|
static |
|
inlinestatic |
Definition at line 411 of file ffplay.c.
Referenced by audio_thread().
|
static |
Definition at line 421 of file ffplay.c.
Referenced by packet_queue_put().
|
static |
Definition at line 444 of file ffplay.c.
Referenced by packet_queue_put_nullpacket(), and read_thread().
|
static |
Definition at line 466 of file ffplay.c.
Referenced by read_thread().
|
static |
Definition at line 473 of file ffplay.c.
Referenced by stream_open().
|
static |
Definition at line 493 of file ffplay.c.
Referenced by decoder_abort(), packet_queue_destroy(), and read_thread().
|
static |
Definition at line 507 of file ffplay.c.
Referenced by stream_close().
|
static |
Definition at line 515 of file ffplay.c.
Referenced by decoder_abort().
|
static |
Definition at line 526 of file ffplay.c.
Referenced by decoder_start().
|
static |
Definition at line 535 of file ffplay.c.
Referenced by decoder_decode_frame().
|
static |
Definition at line 569 of file ffplay.c.
Referenced by stream_component_open().
|
static |
Definition at line 582 of file ffplay.c.
Referenced by audio_thread(), get_video_frame(), and subtitle_thread().
|
static |
Definition at line 681 of file ffplay.c.
Referenced by stream_component_close().
|
static |
Definition at line 686 of file ffplay.c.
Referenced by frame_queue_destroy(), and frame_queue_next().
|
static |
Definition at line 692 of file ffplay.c.
Referenced by stream_open().
|
static |
Definition at line 713 of file ffplay.c.
Referenced by stream_close().
|
static |
Definition at line 725 of file ffplay.c.
Referenced by decoder_abort().
|
static |
Definition at line 732 of file ffplay.c.
Referenced by video_image_display(), and video_refresh().
|
static |
Definition at line 737 of file ffplay.c.
Referenced by video_refresh().
|
static |
Definition at line 742 of file ffplay.c.
Referenced by video_image_display(), and video_refresh().
|
static |
Definition at line 747 of file ffplay.c.
Referenced by audio_thread(), queue_picture(), and subtitle_thread().
|
static |
Definition at line 763 of file ffplay.c.
Referenced by audio_decode_frame().
|
static |
Definition at line 779 of file ffplay.c.
Referenced by audio_thread(), queue_picture(), and subtitle_thread().
|
static |
Definition at line 789 of file ffplay.c.
Referenced by audio_decode_frame(), and video_refresh().
|
static |
Definition at line 805 of file ffplay.c.
Referenced by audio_decode_frame(), read_thread(), video_image_display(), and video_refresh().
|
static |
Definition at line 811 of file ffplay.c.
Referenced by event_loop().
|
static |
Definition at line 820 of file ffplay.c.
Referenced by stream_component_close().
Definition at line 829 of file ffplay.c.
Referenced by decode_cabac_luma_residual(), decode_cabac_residual_internal(), decode_cabac_residual_nondc(), decode_luma_residual(), ff_h264_decode_mb_cabac(), ff_h264_decode_mb_cavlc(), fill_decode_caches(), fill_filter_caches_inter(), h264_er_decode_mb(), hl_decode_mb(), hl_decode_mb_444(), 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(), video_audio_display(), write_back_motion(), and ZERO8x2().
|
static |
Definition at line 840 of file ffplay.c.
Referenced by upload_texture(), video_audio_display(), and video_image_display().
|
static |
Definition at line 864 of file ffplay.c.
Referenced by set_default_window_size(), and video_image_display().
|
static |
Definition at line 891 of file ffplay.c.
Referenced by upload_texture().
Definition at line 909 of file ffplay.c.
Referenced by video_image_display().
|
static |
Definition at line 950 of file ffplay.c.
Referenced by video_image_display().
|
static |
Definition at line 966 of file ffplay.c.
Referenced by video_display().
Definition at line 1056 of file ffplay.c.
Referenced by video_audio_display().
|
static |
Definition at line 1061 of file ffplay.c.
Referenced by video_display().
|
static |
Definition at line 1212 of file ffplay.c.
Referenced by stream_close(), and stream_cycle_channel().
|
static |
Definition at line 1270 of file ffplay.c.
Referenced by do_exit(), and stream_open().
|
static |
Definition at line 1306 of file ffplay.c.
Referenced by event_loop(), and main().
|
static |
|
static |
Definition at line 1338 of file ffplay.c.
Referenced by queue_picture(), and read_thread().
|
static |
Definition at line 1350 of file ffplay.c.
Referenced by video_display().
|
static |
Definition at line 1374 of file ffplay.c.
Referenced by video_refresh().
Definition at line 1388 of file ffplay.c.
Referenced by compute_target_delay(), get_master_clock(), set_clock_speed(), stream_toggle_pause(), sync_clock_to_slave(), synchronize_audio(), and video_refresh().
Definition at line 1400 of file ffplay.c.
Referenced by sdl_audio_callback(), and set_clock().
Definition at line 1408 of file ffplay.c.
Referenced by init_clock(), read_thread(), set_clock_speed(), stream_toggle_pause(), sync_clock_to_slave(), and update_video_pts().
Definition at line 1414 of file ffplay.c.
Referenced by check_external_clock_speed().
Definition at line 1420 of file ffplay.c.
Referenced by stream_open().
Definition at line 1428 of file ffplay.c.
Referenced by sdl_audio_callback(), and update_video_pts().
|
static |
Definition at line 1436 of file ffplay.c.
Referenced by compute_target_delay(), get_master_clock(), get_video_frame(), synchronize_audio(), and video_refresh().
|
static |
Definition at line 1453 of file ffplay.c.
Referenced by compute_target_delay(), event_loop(), get_video_frame(), seek_chapter(), synchronize_audio(), and video_refresh().
|
static |
Definition at line 1471 of file ffplay.c.
Referenced by video_refresh().
|
static |
Definition at line 1486 of file ffplay.c.
Referenced by event_loop(), read_thread(), and seek_chapter().
|
static |
Definition at line 1500 of file ffplay.c.
Referenced by step_to_next_frame(), toggle_pause(), and video_refresh().
|
static |
Definition at line 1513 of file ffplay.c.
Referenced by event_loop().
|
static |
Definition at line 1519 of file ffplay.c.
Referenced by event_loop().
|
static |
Definition at line 1524 of file ffplay.c.
Referenced by event_loop().
|
static |
Definition at line 1531 of file ffplay.c.
Referenced by event_loop(), and read_thread().
|
static |
Definition at line 1539 of file ffplay.c.
Referenced by video_refresh().
|
static |
Definition at line 1569 of file ffplay.c.
Referenced by video_refresh().
|
static |
Definition at line 1581 of file ffplay.c.
Referenced by video_refresh().
|
static |
Definition at line 1589 of file ffplay.c.
Referenced by refresh_loop_wait_event().
|
static |
Definition at line 1756 of file ffplay.c.
Referenced by video_thread().
|
static |
Definition at line 1787 of file ffplay.c.
Referenced by video_thread().
|
static |
Definition at line 1820 of file ffplay.c.
Referenced by configure_audio_filters(), and configure_video_filters().
|
static |
Definition at line 1863 of file ffplay.c.
Referenced by video_thread().
|
static |
Definition at line 1993 of file ffplay.c.
Referenced by audio_thread(), and stream_component_open().
|
static |
Definition at line 2069 of file ffplay.c.
Referenced by stream_component_open().
|
static |
Definition at line 2147 of file ffplay.c.
Referenced by stream_component_open().
|
static |
Definition at line 2158 of file ffplay.c.
Referenced by stream_component_open().
|
static |
Definition at line 2261 of file ffplay.c.
Referenced by stream_component_open().
|
static |
Definition at line 2296 of file ffplay.c.
Referenced by sdl_audio_callback().
|
static |
Definition at line 2316 of file ffplay.c.
Referenced by audio_decode_frame().
|
static |
Decode one audio frame and return its uncompressed size.
The processed audio frame is decoded, converted if required, and stored in is->audio_buf, with size in bytes given by the return value.
Definition at line 2364 of file ffplay.c.
Referenced by sdl_audio_callback().
|
static |
Definition at line 2474 of file ffplay.c.
Referenced by audio_open().
|
static |
Definition at line 2517 of file ffplay.c.
Referenced by stream_component_open().
|
static |
Definition at line 2593 of file ffplay.c.
Referenced by stream_component_open().
|
static |
Definition at line 2625 of file ffplay.c.
Referenced by read_thread(), and stream_cycle_channel().
|
static |
Definition at line 2788 of file ffplay.c.
Referenced by read_thread().
|
static |
Definition at line 2794 of file ffplay.c.
Referenced by read_thread().
|
static |
Definition at line 2801 of file ffplay.c.
Referenced by read_thread().
|
static |
Definition at line 2818 of file ffplay.c.
Referenced by stream_open().
|
static |
|
static |
Definition at line 3208 of file ffplay.c.
Referenced by event_loop().
|
static |
Definition at line 3287 of file ffplay.c.
Referenced by event_loop().
|
static |
Definition at line 3293 of file ffplay.c.
Referenced by event_loop().
|
static |
Definition at line 3305 of file ffplay.c.
Referenced by event_loop().
|
static |
Definition at line 3322 of file ffplay.c.
Referenced by event_loop().
|
static |
|
static |
|
static |
|
static |
|
static |
|
static |
|
static |
|
static |
|
static |
Definition at line 3710 of file ffplay.c.
Referenced by main(), and show_help_default().
void show_help_default | ( | const char * | opt, |
const char * | arg | ||
) |
Per-fftool specific help handler.
Implemented in each fftool, called by show_help().
const char program_name[] = "ffplay" |
program name, defined by the program for show_version().
Definition at line 64 of file ffplay.c.
Referenced by main(), and show_usage().
const int program_birth_year = 2003 |
program birth year, defined by the program for show_banner()
|
static |
Definition at line 308 of file ffplay.c.
Referenced by ifile_open(), main(), and opt_format().
|
static |
Definition at line 309 of file ffplay.c.
Referenced by do_exit(), main(), opt_input_file(), read_thread(), seek_test(), video_decode(), video_decode_example(), and video_open().
|
static |
Definition at line 310 of file ffplay.c.
Referenced by read_thread(), and video_open().
|
static |
Definition at line 311 of file ffplay.c.
Referenced by main(), set_default_window_size(), and video_open().
|
static |
Definition at line 312 of file ffplay.c.
Referenced by main(), set_default_window_size(), and video_open().
|
static |
Definition at line 313 of file ffplay.c.
Referenced by event_loop(), opt_width(), set_default_window_size(), and video_open().
|
static |
Definition at line 314 of file ffplay.c.
Referenced by event_loop(), opt_height(), set_default_window_size(), and video_open().
|
static |
Definition at line 315 of file ffplay.c.
Referenced by video_open().
|
static |
Definition at line 316 of file ffplay.c.
Referenced by video_open().
|
static |
Definition at line 317 of file ffplay.c.
Referenced by main(), map_manual(), and read_thread().
|
static |
Definition at line 318 of file ffplay.c.
Referenced by main(), map_manual(), and read_thread().
|
static |
Definition at line 319 of file ffplay.c.
Referenced by read_thread().
|
static |
Definition at line 320 of file ffplay.c.
Referenced by read_thread().
|
static |
Definition at line 321 of file ffplay.c.
Referenced by event_loop(), and read_thread().
|
static |
Definition at line 322 of file ffplay.c.
Referenced by event_loop().
|
static |
Definition at line 323 of file ffplay.c.
Referenced by main(), and video_refresh().
|
static |
Definition at line 326 of file ffplay.c.
Referenced by stream_open().
|
static |
Definition at line 327 of file ffplay.c.
Referenced by do_exit(), read_thread(), and video_refresh().
|
static |
Definition at line 328 of file ffplay.c.
Referenced by opt_sync(), and stream_open().
|
static |
Definition at line 329 of file ffplay.c.
Referenced by add_fragment(), adjust_frame_pts_to_encoder_tb(), asf_read_ext_stream_properties(), asf_read_stream_properties(), calc_next_seg_no_from_timelines(), copy_chapters(), decode(), ff_dshow_filter_Run(), get_concatdec_select(), get_segment_start_time_based_on_timeline(), gxf_seek(), ifile_open(), input_packet_process(), insert_trim(), main(), mov_build_index(), mov_read_iacb(), of_open(), of_streamcopy(), read_thread(), real_seek(), rm_read_header(), skeleton_header(), ts_fixup(), update_stream_timings(), and write_manifest().
|
static |
Definition at line 330 of file ffplay.c.
Referenced by queue_picture(), read_thread(), video_refresh(), video_thread(), and vp_duration().
|
static |
Definition at line 331 of file ffplay.c.
Referenced by stream_component_open().
|
static |
Definition at line 332 of file ffplay.c.
Referenced by av_read_frame(), and read_thread().
|
static |
Definition at line 333 of file ffplay.c.
Referenced by chroma_4mv_motion_lowres(), ff_mpeg4_decode_studio(), ff_update_block_index(), hpel_motion_lowres(), mjpeg_copy_block(), mpeg_decode_slice(), mpeg_motion_lowres(), MPV_motion_lowres(), and stream_component_open().
|
static |
Definition at line 334 of file ffplay.c.
Referenced by decoder_decode_frame().
|
static |
Definition at line 335 of file ffplay.c.
Referenced by read_thread().
|
static |
Definition at line 336 of file ffplay.c.
Referenced by event_loop().
|
static |
Definition at line 337 of file ffplay.c.
Referenced by event_loop().
|
static |
Definition at line 338 of file ffplay.c.
Referenced by filter_frame(), hevc_idct_dc_16x16_msa(), hevc_idct_dc_32x32_msa(), img_read_seek(), mov_parse_tiles(), read_header(), and read_thread().
|
static |
Definition at line 339 of file ffplay.c.
Referenced by get_video_frame(), and video_refresh().
|
static |
Definition at line 340 of file ffplay.c.
Referenced by read_thread().
|
static |
Definition at line 341 of file ffplay.c.
Referenced by opt_show_mode(), and read_thread().
|
static |
Definition at line 342 of file ffplay.c.
Referenced by do_exit(), ifile_open(), opt_codec(), and stream_component_open().
|
static |
Definition at line 343 of file ffplay.c.
Referenced by do_exit(), ifile_open(), map_auto_subtitle(), opt_codec(), and stream_component_open().
|
static |
Definition at line 344 of file ffplay.c.
Referenced by do_exit(), ifile_open(), opt_codec(), and stream_component_open().
double rdftspeed = 0.02 |
Definition at line 345 of file ffplay.c.
Referenced by video_refresh().
|
static |
Definition at line 346 of file ffplay.c.
Referenced by event_loop(), and refresh_loop_wait_event().
|
static |
Definition at line 347 of file ffplay.c.
Referenced by event_loop(), and refresh_loop_wait_event().
|
static |
Definition at line 348 of file ffplay.c.
Referenced by do_exit(), opt_add_vfilter(), and video_thread().
|
static |
Definition at line 349 of file ffplay.c.
Referenced by do_exit(), event_loop(), and opt_add_vfilter().
|
static |
Definition at line 350 of file ffplay.c.
Referenced by audio_thread(), configure_audio_filters(), and stream_component_open().
|
static |
Definition at line 351 of file ffplay.c.
Referenced by configure_video_filters(), and ist_add().
|
static |
Definition at line 352 of file ffplay.c.
Referenced by read_thread().
|
static |
Definition at line 353 of file ffplay.c.
Referenced by configure_audio_filters(), and video_thread().
|
static |
Definition at line 356 of file ffplay.c.
Referenced by create_hwaccel(), decode_frame(), ff_get_buffer(), ff_hwaccel_frame_priv_alloc(), ff_mjpeg_decode_sof(), hwaccel_init(), ist_add(), main(), update_context_from_thread(), vc1_decode_frame(), vp78_decode_frame(), and vp9_decode_frame().
|
static |
Definition at line 359 of file ffplay.c.
Referenced by toggle_full_screen(), and video_open().
|
static |
Definition at line 360 of file ffplay.c.
Referenced by audio_decode_frame(), sdl_audio_callback(), and video_audio_display().
|
static |
Definition at line 364 of file ffplay.c.
Referenced by ac3_float_mdct_init(), apply_window(), backward_filter(), celt_autocorr(), checkasm_check_synth_filter(), clip_to_window(), do_exit(), do_hybrid_window(), ff_ebur128_init(), ff_kbd_window_init(), ff_kbd_window_init_fixed(), ff_mediacodec_surface_unref(), ff_mpa_synth_filter_TMPL(), ff_mpadsp_apply_window_TMPL(), ff_sine_window_init(), filter_channel(), generate_hann_window(), hdcd_integrate(), imdct_and_windowing_eld(), interpolation(), main(), mediacodec_jni_configure(), mediacodec_ndk_configure(), mpa_synth_init(), opus_fade(), predictor(), process_new(), process_old(), run_imdct(), sine_window_init_fixed(), synth_filter_fixed(), synth_filter_fixed_64(), synth_filter_float(), synth_filter_float_64(), toggle_full_screen(), video_open(), vk_renderer_create(), wmapro_window(), yae_align(), yae_reset(), and yae_xcorr_via_rdft().
|
static |
Definition at line 365 of file ffplay.c.
Referenced by do_exit(), fill_rectangle(), main(), realloc_texture(), video_audio_display(), video_display(), video_image_display(), vk_renderer_create(), vk_renderer_destroy(), vk_renderer_display(), vk_renderer_get_hw_dev(), and vk_renderer_resize().
|
static |
Definition at line 366 of file ffplay.c.
Referenced by configure_video_filters(), and main().
|
static |
Definition at line 367 of file ffplay.c.
Referenced by audio_open(), stream_component_close(), and stream_component_open().
|
static |
Definition at line 369 of file ffplay.c.
Referenced by configure_video_filters(), create_hwaccel(), do_exit(), event_loop(), main(), and video_image_display().
|
static |
Referenced by configure_video_filters(), and get_sdl_pix_fmt_and_blendmode().
|
static |
Definition at line 943 of file ffplay.c.
Referenced by configure_video_filters().
|
static |
Definition at line 3656 of file ffplay.c.
Referenced by main(), and show_help_default().