FFmpeg
|
Typedefs | |
using | clients = =============================================Slice threading-*The client's draw_horiz_band() must be thread-safe according to the comment in avcodec.h.Frame threading-*Restrictions with slice threading also apply.*Custom get_buffer2() and get_format() callbacks must be thread-safe.*There is one frame of delay added for every thread beyond the first one.Clients must be able to handle this |
Functions | |
the pkt_dts and pkt_pts fields in AVFrame will work as usual Restrictions on codec whose streams don t reset across will not work because their bitstreams cannot be decoded in parallel *The contents of buffers must not be read before | ff_thread_await_progress () has been called on them.reget_buffer() and buffer age optimizations no longer work.*The contents of buffers must not be written to after ff_thread_report_progress() has been called on them.This includes draw_edges().Porting codecs to frame threading |
the pkt_dts and pkt_pts fields in AVFrame will work as usual Restrictions on codec whose streams don t reset across will not work because their bitstreams cannot be decoded in parallel *The contents of buffers must not be read before as well as code calling | get_buffer () |
the pkt_dts and pkt_pts fields in AVFrame will work as usual Restrictions on codec whose streams don t reset across will not work because their bitstreams cannot be decoded in parallel *The contents of buffers must not be read before as well as code calling up to before the decode process starts Call | ff_thread_finish_setup () afterwards.If some code can't be moved |
the pkt_dts and pkt_pts fields in AVFrame will work as usual Restrictions on codec whose streams don t reset across will not work because their bitstreams cannot be decoded in parallel *The contents of buffers must not be read before as well as code calling up to before the decode process starts Call have | update_thread_context () run it in the next thread.Add AV_CODEC_CAP_FRAME_THREADS to the codec capabilities.There will be very little speed gain at this point but it should work.If there are inter-frame dependencies |
the pkt_dts and pkt_pts fields in AVFrame will work as usual Restrictions on codec whose streams don t reset across will not work because their bitstreams cannot be decoded in parallel *The contents of buffers must not be read before as well as code calling up to before the decode process starts Call have so the codec calls ff_thread_report | await_progress () |
the pkt_dts and pkt_pts fields in AVFrame will work as usual Restrictions on codec whose streams don t reset across will not work because their bitstreams cannot be decoded in parallel *The contents of buffers must not be read before as well as code calling up to before the decode process starts Call have so the codec calls ff_thread_report set FF_CODEC_CAP_ALLOCATE_PROGRESS in AVCodec caps_internal and use | ff_thread_get_buffer () to allocate frames.The frames must then be freed with ff_thread_release_buffer().Otherwise decode directly into the user-supplied frames.Call ff_thread_report_progress() after some part of the current picture has decoded.A good place to put this is where draw_horiz_band() is called-add this if it isn't called anywhere |
the pkt_dts and pkt_pts fields in AVFrame will work as usual Restrictions on codec whose streams don t reset across will not work because their bitstreams cannot be decoded in parallel *The contents of buffers must not be read before as well as code calling up to before the decode process starts Call have so the codec calls ff_thread_report set FF_CODEC_CAP_ALLOCATE_PROGRESS in AVCodec caps_internal and use as it s useful too and the implementation is trivial when you re doing this Note that | draw_edges () needs to be called before reporting progress.Before accessing a reference frame or its MVs |
Variables | |
FFmpeg multithreading | methods |
the pkt_dts and pkt_pts fields in AVFrame will work as usual Restrictions on codec | implementations |
the pkt_dts and pkt_pts fields in AVFrame will work as usual Restrictions on codec whose streams don t reset across | frames |
using clients = ============================================= Slice threading - * The client's draw_horiz_band() must be thread-safe according to the comment in avcodec.h. Frame threading - * Restrictions with slice threading also apply. * Custom get_buffer2() and get_format() callbacks must be thread-safe. * There is one frame of delay added for every thread beyond the first one. Clients must be able to handle this |
Definition at line 25 of file multithreading.txt.
the pkt_dts and pkt_pts fields in AVFrame will work as usual Restrictions on codec whose streams don t reset across will not work because their bitstreams cannot be decoded in parallel* The contents of buffers must not be read before ff_thread_await_progress | ( | ) |
Referenced by await_reference_mb_row(), await_reference_row(), await_references(), decode(), decode_frame(), decode_mb_row_no_filter(), decode_mode(), decode_slice(), ff_er_frame_end(), find_ref_mvs(), guess_mv(), h264_field_start(), handle_p_frame_apng(), handle_p_frame_png(), hevc_await_progress(), is_intra_more_likely(), mc_chroma_scaled(), mc_chroma_unscaled(), mc_luma_scaled(), mc_luma_unscaled(), mpeg4_decode_mb(), mpv_reconstruct_mb_internal(), rv34_decode_mv(), rv34_mc(), temporal_luma_motion_vector(), vp78_decode_frame(), vp8_mc_chroma(), vp8_mc_luma(), and wavpack_decode_frame().
the pkt_dts and pkt_pts fields in AVFrame will work as usual Restrictions on codec whose streams don t reset across will not work because their bitstreams cannot be decoded in parallel* The contents of buffers must not be read before as well as code calling get_buffer | ( | ) |
the pkt_dts and pkt_pts fields in AVFrame will work as usual Restrictions on codec whose streams don t reset across will not work because their bitstreams cannot be decoded in parallel* The contents of buffers must not be read before as well as code calling up to before the decode process starts Call ff_thread_finish_setup | ( | ) |
Referenced by cfhd_decode(), decode_frame(), decode_idat_chunk(), decode_nal_units(), ff_h263_decode_frame(), ff_rv34_decode_frame(), hap_decode(), hevc_frame_start(), mimic_decode_frame(), mpeg_field_start(), tak_decode_frame(), vp3_decode_frame(), vp78_decode_frame(), vp9_decode_frame(), and wavpack_decode_block().
the pkt_dts and pkt_pts fields in AVFrame will work as usual Restrictions on codec whose streams don t reset across will not work because their bitstreams cannot be decoded in parallel* The contents of buffers must not be read before as well as code calling up to before the decode process starts Call have update_thread_context | ( | ) |
Referenced by cfhd_close(), copy_fields(), decode_frame_common(), ff_vp8_decode_init(), png_dec_end(), read_huffman_tree(), tak_decode_frame(), and wv_dsd_reset().
the pkt_dts and pkt_pts fields in AVFrame will work as usual Restrictions on codec whose streams don t reset across will not work because their bitstreams cannot be decoded in parallel* The contents of buffers must not be read before as well as code calling up to before the decode process starts Call have so the codec calls ff_thread_report await_progress | ( | ) |
the pkt_dts and pkt_pts fields in AVFrame will work as usual Restrictions on codec whose streams don t reset across will not work because their bitstreams cannot be decoded in parallel* The contents of buffers must not be read before as well as code calling up to before the decode process starts Call have so the codec calls ff_thread_report set FF_CODEC_CAP_ALLOCATE_PROGRESS in AVCodec caps_internal and use ff_thread_get_buffer | ( | ) |
Referenced by aic_decode_frame(), alloc_frame(), alloc_frame_buffer(), alloc_picture(), av1_frame_alloc(), cfhd_decode(), cllc_decode_frame(), cri_decode_frame(), decode_blocks(), decode_element(), decode_entropy_coded_image(), decode_frame(), decode_idat_chunk(), dnxhd_decode_frame(), dvvideo_decode_frame(), dxtory_decode_v1_410(), dxtory_decode_v1_420(), dxtory_decode_v1_444(), dxtory_decode_v1_rgb(), dxtory_decode_v2(), dxv_decode(), flac_decode_frame(), hap_decode(), hqx_decode_frame(), init_image(), jpeg2000_decode_frame(), lag_decode_frame(), libopenjpeg_decode_frame(), magy_decode_frame(), mimic_decode_frame(), photocd_decode_frame(), pixlet_decode_frame(), tak_decode_frame(), tta_decode_frame(), v410_decode_frame(), vble_decode_frame(), vp3_decode_frame(), vp8_alloc_frame(), vp9_frame_alloc(), and wavpack_decode_block().
the pkt_dts and pkt_pts fields in AVFrame will work as usual Restrictions on codec whose streams don t reset across will not work because their bitstreams cannot be decoded in parallel* The contents of buffers must not be read before as well as code calling up to before the decode process starts Call have so the codec calls ff_thread_report set FF_CODEC_CAP_ALLOCATE_PROGRESS in AVCodec caps_internal and use as it s useful too and the implementation is trivial when you re doing this Note that draw_edges | ( | ) |
FFmpeg multithreading methods |
Definition at line 2 of file multithreading.txt.
Definition at line 29 of file multithreading.txt.