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" (Q) which denotes the set of all rational numbers.
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().
Compare two rationals.
a == ba > ba < bINT_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().
Convert an AVRational to a double.
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.
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().
Multiply two rationals.
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().
Divide one rational by another.
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().
Add two rationals.
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().
Subtract one rational from another.
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().
Invert a rational.
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().
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)
double to convert 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().
Find which of the two rationals is closer to another rational.
q1 is nearer to q than q2q2 is nearer to q than q1Definition at line 127 of file rational.c.
Referenced by av_find_nearest_q_idx().
Find the value in a list of rationals nearest a given reference rational.
{0, 0} Definition at line 142 of file rational.c.
Referenced by choose_out_timebase().
Convert an AVRational to a IEEE 32-bit float expressed in fixed-point format.
Definition at line 152 of file rational.c.
Referenced by ircam_write_header(), and main().
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().