FFmpeg
|
Files | |
file | rational.h |
Data Structures | |
struct | AVRational |
Rational number (pair of numerator and denominator). More... | |
Functions | |
static AVRational | av_make_q (int num, int den) |
Create an AVRational. More... | |
static int | av_cmp_q (AVRational a, AVRational b) |
Compare two rationals. More... | |
static double | av_q2d (AVRational a) |
Convert an AVRational to a double . More... | |
int | av_reduce (int *dst_num, int *dst_den, int64_t num, int64_t den, int64_t max) |
Reduce a fraction. More... | |
AVRational | av_mul_q (AVRational b, AVRational c) av_const |
Multiply two rationals. More... | |
AVRational | av_div_q (AVRational b, AVRational c) av_const |
Divide one rational by another. More... | |
AVRational | av_add_q (AVRational b, AVRational c) av_const |
Add two rationals. More... | |
AVRational | av_sub_q (AVRational b, AVRational c) av_const |
Subtract one rational from another. More... | |
static av_always_inline AVRational | av_inv_q (AVRational q) |
Invert a rational. More... | |
AVRational | av_d2q (double d, int max) av_const |
Convert a double precision floating point number to a rational. More... | |
int | av_nearer_q (AVRational q, AVRational q1, AVRational q2) |
Find which of the two rationals is closer to another rational. More... | |
int | av_find_nearest_q_idx (AVRational q, const AVRational *q_list) |
Find the value in a list of rationals nearest a given reference rational. More... | |
uint32_t | av_q2intfloat (AVRational q) |
Convert an AVRational to a IEEE 32-bit float expressed in fixed-point format. More... | |
AVRational | av_gcd_q (AVRational a, AVRational b, int max_den, AVRational def) |
Return the best rational so that a and b are multiple of it. More... | |
Rational number calculation.
While rational numbers can be expressed as floating-point numbers, the conversion process is a lossy one, so are floating-point operations. On the other hand, the nature of FFmpeg demands highly accurate calculation of timestamps. This set of rational number utilities serves as a generic interface for manipulating rational numbers as pairs of numerators and denominators.
Many of the functions that operate on AVRational's have the suffix _q
, in reference to the mathematical symbol "ℚ" (Q) which denotes the set of all rational numbers.
|
inlinestatic |
Create an AVRational.
Useful for compilers that do not support compound literals.
Definition at line 71 of file rational.h.
Referenced by abs_sub_q(), activate(), ambisonics_config(), aribcaption_decode(), audio_frame(), av_csp_primaries_id_from_desc(), av_gcd_q(), avf_read_packet(), calculate_display_rect(), config_comm_output(), config_input(), config_out_props(), config_output(), config_props(), config_video_output(), dnn_classify_post_proc(), dnn_detect_parse_yolo_output(), dnn_detect_post_proc_ssd(), dnn_detect_post_proc_tf(), encode_frame(), export_metadata(), ff_decklink_read_header(), ff_decklink_set_format(), ff_decklink_write_header(), ff_dovi_rpu_parse(), ff_framequeue_skip_samples(), ff_h2645_sei_to_frame(), ff_icc_profile_sanitize(), ff_vorbiscomment_write(), filter_frame(), fsync_config_props(), get_bmd_timecode(), get_frame_timecode(), get_next_nb_samples(), get_next_track_with_minimum_timestamp(), get_packet_defaults(), gif_read_header(), imf_base_resource_init(), imf_cpl_init(), imf_read_packet(), imf_seek(), init(), libdav1d_receive_frame(), libjxl_receive_frame(), main(), mcc_read_header(), mix_presentation_obu(), moflex_read_sync(), mov_metadata_hmmt(), mov_read_amve(), mov_read_mdcv(), mov_read_sidx(), mov_read_smdm(), mxf_init(), mxf_parse_structural_metadata(), mxf_read_generic_descriptor(), open_track_file_resource(), open_virtual_track(), output_frame(), parameter_block_obu(), parse_chunk(), parse_manifest_representation(), plot_cqt(), populate_avctx_color_fields(), push_frame(), scalable_channel_layout_config(), try_push_frame(), video_frame(), decklink_input_callback::VideoInputFrameArrived(), viv_read_packet(), and viv_read_seek().
|
inlinestatic |
Compare two rationals.
a | First rational |
b | Second rational |
a == b
a > b
a < b
INT_MIN
if one of the values is of the form 0 / 0
Definition at line 89 of file rational.h.
Referenced by av_csp_primaries_id_from_desc(), av_nearer_q(), av_opt_is_set_to_default(), av_timecode_get_smpte(), av_timecode_make_smpte_tc_string2(), avformat_find_stream_info(), calculate_display_rect(), compute_display_area(), compute_texture_rect(), config_input(), config_out_props(), config_output(), dash_init(), dnn_detect_fill_side_data(), dump_stream_format(), ff_alloc_timecode_sei(), ff_decklink_set_format(), ff_h263_aspect_to_info(), ff_icc_profile_sanitize(), ff_mpeg12_find_best_frame_rate(), ff_mxf_get_content_package_rate(), get_bmd_timecode(), get_frame_timecode(), get_next_track_with_minimum_timestamp(), get_resource_context_for_timestamp(), h264_init_ps(), imf_read_packet(), init_muxer(), main(), max_q(), mpeg_decode_postinit(), opengl_compute_display_area(), output_frame(), rescale_pts(), update_context_with_frame_header(), update_pts(), vaapi_encode_mpeg2_init_sequence_params(), video_frame(), decklink_input_callback::VideoInputFrameArrived(), write_adaptation_set(), and write_manifest().
|
inlinestatic |
Convert an AVRational to a double
.
a | AVRational to convert |
a
in floating-point form Definition at line 104 of file rational.h.
Referenced by activate(), audio_thread(), av_dump_format(), av_guess_frame_rate(), av_ts_make_time_string2(), avformat_find_stream_info(), avformat_transfer_internal_stream_timing_info(), choose_out_timebase(), config_input(), config_output(), config_output_props(), config_props(), configure_video_device(), ddagrab_config_props(), ddagrab_request_frame(), decode_frame(), decode_syncpoint(), defined_frame_rate(), deshake_opencl_init(), do_blend(), draw_text(), dump_ambient_viewing_environment(), dump_ambient_viewing_environment_metadata(), dump_dovi_metadata(), dump_dynamic_hdr_plus(), dump_dynamic_hdr_vivid(), dump_mastering_display(), dump_mastering_display_metadata(), dump_stream_format(), dv_write_pack(), enc_stats_write(), encode_frame(), fbdev_read_header(), fbdev_read_packet(), ff_decklink_set_format(), ff_determine_signal_peak(), ff_fill_rgb2xyz_table(), ff_fill_rgb2yuv_table(), ff_h2645_sei_to_frame(), ff_icc_profile_sanitize(), ff_inlink_evaluate_timeline_at_frame(), ff_inlink_process_commands(), ff_mpv_encode_init(), ff_mpv_encode_picture(), ff_rfps_add_frame(), ff_rfps_calculate(), fill_whitepoint_conv_table(), film_write_header(), filter_frame(), filter_slice(), flv_init(), flv_write_metadata_packet(), forced_kf_apply(), gdigrab_read_header(), gdigrab_read_packet(), geq_filter_frame(), get_best_frame(), get_conf(), get_fps(), get_resource_context_for_timestamp(), get_video_frame(), hdr_encode_frame(), imf_read_packet(), init(), init_muxer(), init_stream(), init_video(), ist_dts_update(), libjxl_populate_primaries(), libplacebo_activate(), libplacebo_config_output(), main(), match_framerate(), mkv_write_trailer(), mkv_write_video_color(), mov_write_trak_tag(), mpegvideo_parse(), noise_init(), output_frame(), output_single_frame(), overlay_cuda_blend(), pkt_dump_internal(), put_videoinfoheader2(), qrencode_config_input(), qsv_hevc_set_encode_ctrl(), read_header(), read_seek(), read_thread(), request_frame(), rfc4175_parse_format(), seg_write_packet(), segment_end(), select_frame(), set_context_streams_from_tracks(), setts_init(), stream_has_enough_packets(), svc_encode_init(), thp_read_header(), tonemap(), tonemap_opencl_init(), tonemap_vaapi_save_metadata(), update_crops(), update_video_stats(), v4l2_read_header(), vaapi_encode_h265_init_picture_params(), vaapi_encode_mpeg2_init_sequence_params(), video_sync_process(), video_thread(), vpp_set_frame_ext_params(), write_adaptation_set(), write_manifest(), and writer_print_time().
Reduce a fraction.
This is useful for framerate calculations.
[out] | dst_num | Destination numerator |
[out] | dst_den | Destination denominator |
[in] | num | Source numerator |
[in] | den | Source denominator |
[in] | max | Maximum allowed values for dst_num & dst_den |
Definition at line 35 of file rational.c.
Referenced by aom_decode(), apng_write_header(), asf_read_header(), av1_metadata_update_sequence_header(), av_add_q(), av_d2q(), av_guess_sample_aspect_ratio(), av_mul_q(), av_parse_ratio(), avcodec_string(), avformat_find_stream_info(), avformat_transfer_internal_stream_timing_info(), avi_write_header(), avpriv_set_pts_info(), choose_out_timebase(), coherent_ts(), compute_dar(), compute_frame_duration(), config_input(), config_output(), cudacolorspace_filter_frame(), cudascale_filter_frame(), dash_init(), decode_frame(), decode_sequence_header_adv(), dnxhd_decode_header(), dump_stream_format(), dxa_read_header(), export_stream_params(), ff_av1_framerate(), ff_canopus_parse_info_tag(), ff_mpv_encode_init(), ff_rfps_calculate(), ff_rm_read_mdpr_codecdata(), ff_yadif_config_output_common(), filter_frame(), flush_packet(), gif_read_header(), h264_metadata_update_sps(), h264_slice_header_init(), h265_metadata_update_sps(), h265_metadata_update_vps(), hevc_parse_slice_header(), imf_time_to_ts(), jp2_find_codestream(), jpeg_put_comments(), libdav1d_receive_frame(), libx265_encode_init(), mcc_read_header(), mkv_write_track_video(), mov_read_header(), mov_read_pasp(), mov_read_trak(), mov_write_pasp_tag(), mpeg2_metadata_update_fragment(), mpeg4_encode_vol_header(), mpeg_decode_postinit(), mxf_parse_dnxhd_frame(), mxf_parse_ffv1_frame(), mxf_parse_h264_frame(), mxf_parse_mpeg2_frame(), nppscale_filter_frame(), parse_nal_unit(), parse_nal_units(), parse_video_var(), pcx_encode_frame(), put_videoinfoheader2(), read_fps(), rebuild_filter_bank_with_compensation(), resample_init(), scale_frame(), scale_vt_filter_frame(), set_parser_ctx(), set_sar(), show_stream(), skeleton_header(), smacker_read_header(), svc_encode_init(), tmv_read_header(), update_context_with_frame_header(), vaapi_encode_h264_init_sequence_params(), vaapi_encode_h265_init_sequence_params(), vaapi_encode_init_rate_control(), vaapi_encode_mjpeg_init_picture_params(), vmd_read_header(), vt_pixbuf_set_par(), vtenc_create_encoder(), X264_init(), xvid_encode_frame(), yuv4_read_header(), and yuv4_write_header().
AVRational av_mul_q | ( | AVRational | b, |
AVRational | c | ||
) | const |
Multiply two rationals.
b | First rational |
c | Second rational |
Definition at line 80 of file rational.c.
Referenced by av_add_stable(), av_div_q(), avformat_find_stream_info(), avformat_transfer_internal_stream_timing_info(), avi_write_header(), calculate_display_rect(), compute_display_area(), compute_pkt_fields(), compute_texture_rect(), config_input(), config_out_props(), config_output(), config_props(), cudacolorspace_config_props(), cudascale_config_props(), deint_vaapi_config_output(), enc_open(), encode_frame(), ff_mpeg12_find_best_frame_rate(), ff_yadif_config_output_common(), filter_frame(), h264_parse(), imf_read_packet(), imf_seek(), ist_dts_update(), mpeg_decode_postinit(), mxf_init(), mxf_parse_structural_metadata(), nppsharpen_config_props(), opengl_compute_display_area(), put_videoinfoheader2(), rv20_decode_picture_header(), scale_vaapi_config_output(), scale_vt_config_output(), set_context_streams_from_tracks(), streamcopy_init(), tb_unreliable(), update_sar(), and video_duration_estimate().
AVRational av_div_q | ( | AVRational | b, |
AVRational | c | ||
) | const |
Divide one rational by another.
b | First rational |
c | Second rational |
Definition at line 88 of file rational.c.
Referenced by av_dv_codec_profile2(), av_guess_frame_rate(), avi_read_header(), build_frame_code(), config_input(), config_output(), config_output_props(), config_props(), config_props_output(), ff_icc_profile_sanitize(), ff_mpeg12_find_best_frame_rate(), filter_frame(), imf_time_to_ts(), mediacodec_dec_parse_format(), mpeg_decode_postinit(), open_track_file_resource(), pad_opencl_config_output(), transpose_opencl_config_output(), vaapi_encode_mpeg2_init_sequence_params(), and write_adaptation_set().
AVRational av_add_q | ( | AVRational | b, |
AVRational | c | ||
) | const |
Add two rationals.
b | First rational |
c | Second rational |
Definition at line 93 of file rational.c.
Referenced by av_csp_primaries_id_from_desc(), av_sub_q(), enc_open(), ff_icc_profile_sanitize(), imf_read_packet(), main(), open_track_file_resource(), streamcopy_init(), and video_frame().
AVRational av_sub_q | ( | AVRational | b, |
AVRational | c | ||
) | const |
Subtract one rational from another.
b | First rational |
c | Second rational |
Definition at line 101 of file rational.c.
Referenced by abs_sub_q(), config_props(), ff_icc_profile_sanitize(), imf_read_packet(), main(), open_track_file_resource(), and open_track_resource_context().
|
static |
Invert a rational.
q | value |
Definition at line 159 of file rational.h.
Referenced by activate(), aom_encode(), avformat_find_stream_info(), avformat_transfer_internal_stream_timing_info(), avi_read_header(), build_frame_code(), choose_out_timebase(), config_input(), config_output(), config_props(), config_video(), config_video_output(), ddagrab_config_props(), dec_enc(), dshow_add_device(), dvvideo_decode_frame(), dynamic_set_parameter(), ff_guess_coded_bitrate(), ff_rfps_calculate(), fg_output_step(), film_write_header(), filter_frame(), gdigrab_read_header(), guess_pkt_duration(), h264_parse(), hdr_decode_frame(), hdr_encode_frame(), ifilter_parameters_from_frame(), init(), init_src(), init_video_stream(), ist_dts_update(), libplacebo_activate(), libplacebo_config_output(), mf_encv_output_adjust(), mkv_write_track(), mov_create_timecode_track(), mxf_compute_sample_count(), mxf_handle_missing_index_segment(), mxf_init(), mxf_init_timecode(), mxf_parse_structural_metadata(), mxf_read_seek(), mxf_set_audio_pts(), mxf_set_current_edit_unit(), open_output_file(), process_work_frame(), program_opencl_config_output(), qrencodesrc_config_props(), query_frame(), r3d_read_rdvo(), r3d_seek(), read_header(), request_frame(), rm_write_header(), set_context_streams_from_tracks(), smush_read_header(), source_config_props(), streamcopy_init(), tb_unreliable(), testsrc_vulkan_config_props(), try_push_frame(), txd_read_header(), vaapi_encode_mpeg2_init_sequence_params(), video_duration_estimate(), video_frame_process(), decklink_input_callback::VideoInputFrameArrived(), viv_read_seek(), vivo_read_header(), vpx_encode(), and yuv4_read_header().
AVRational av_d2q | ( | double | d, |
int | max | ||
) | const |
Convert a double precision floating point number to a rational.
In case of infinity, the returned value is expressed as {1, 0}
or {-1, 0}
depending on the sign.
In general rational numbers with |num| <= 1<<26 && |den| <= 1<<26 can be recovered exactly from their double representation. (no exceptions were found within 1B random ones)
d | double to convert |
max | Maximum allowed numerator and denominator |
d
in AVRational form Definition at line 106 of file rational.c.
Referenced by amf_parse_object(), audio_frame(), av_opt_get_q(), av_opt_get_video_rate(), av_opt_is_set_to_default(), av_opt_set_defaults2(), av_parse_ratio(), config_output_props(), config_props(), dec_enc(), decode_frame(), dynamic_set_parameter(), ff_update_hdr_metadata(), flv_update_video_color_info(), fourxm_read_header(), get_aspect_ratio(), hdr_decode_frame(), libjxl_get_primaries(), log_default(), microdvd_read_header(), mov_read_tkhd(), mov_read_trak(), mpeg_decode_postinit(), mv_read_header(), nuv_header(), pdv_read_header(), read_header(), thp_read_header(), var_read_float(), vivo_read_header(), write_number(), and XYZ_xy().
int av_nearer_q | ( | AVRational | q, |
AVRational | q1, | ||
AVRational | q2 | ||
) |
Find which of the two rationals is closer to another rational.
q | Rational to be compared against |
q1 | Rational to be tested |
q2 | Rational to be tested |
q1
is nearer to q
than q2
q2
is nearer to q
than q1
Definition at line 127 of file rational.c.
Referenced by av_find_nearest_q_idx().
int av_find_nearest_q_idx | ( | AVRational | q, |
const AVRational * | q_list | ||
) |
Find the value in a list of rationals nearest a given reference rational.
q | Reference rational |
q_list | Array of rationals terminated by {0, 0} |
Definition at line 142 of file rational.c.
Referenced by choose_out_timebase().
uint32_t av_q2intfloat | ( | AVRational | q | ) |
Convert an AVRational to a IEEE 32-bit float
expressed in fixed-point format.
q | Rational to be converted |
Definition at line 152 of file rational.c.
Referenced by ircam_write_header(), and main().
AVRational av_gcd_q | ( | AVRational | a, |
AVRational | b, | ||
int | max_den, | ||
AVRational | def | ||
) |
Return the best rational so that a and b are multiple of it.
If the resulting denominator is larger than max_den, return def.
Definition at line 186 of file rational.c.
Referenced by config_output(), ff_framesync_configure(), and libplacebo_config_output().