Libav
Public Types | Data Fields
PerThreadContext Struct Reference

Context used by codec threads and stored in their AVCodecInternal thread_ctx. More...

Public Types

enum  { STATE_INPUT_READY, STATE_SETTING_UP, STATE_GET_BUFFER, STATE_SETUP_FINISHED }
 

Data Fields

struct FrameThreadContextparent
 
pthread_t thread
 
int thread_init
 
pthread_cond_t input_cond
 Used to wait for a new packet from the main thread. More...
 
pthread_cond_t progress_cond
 Used by child threads to wait for progress to change. More...
 
pthread_cond_t output_cond
 Used by the main thread to wait for frames to finish. More...
 
pthread_mutex_t mutex
 Mutex used to protect the contents of the PerThreadContext. More...
 
pthread_mutex_t progress_mutex
 Mutex used to protect frame progress values and progress_cond. More...
 
AVCodecContextavctx
 Context used to decode packets passed to this thread. More...
 
AVPacket avpkt
 Input packet (for decoding) or output (for encoding). More...
 
AVFrameframe
 Output frame (for decoding) or input (for encoding). More...
 
int got_frame
 The output of got_picture_ptr from the last avcodec_decode_video() call. More...
 
int result
 The result of the last codec decode/encode() call. More...
 
enum PerThreadContext:: { ... }  state
 
AVFramereleased_buffers
 Array of frames passed to ff_thread_release_buffer(). More...
 
int num_released_buffers
 
int released_buffers_allocated
 
AVFramerequested_frame
 AVFrame the codec passed to get_buffer() More...
 
int requested_flags
 flags passed to get_buffer() for requested_frame More...
 

Detailed Description

Context used by codec threads and stored in their AVCodecInternal thread_ctx.

Definition at line 53 of file pthread_frame.c.

Member Enumeration Documentation

anonymous enum
Enumerator
STATE_INPUT_READY 

Set when the thread is awaiting a packet.

STATE_SETTING_UP 

Set before the codec has called ff_thread_finish_setup().

STATE_GET_BUFFER 

Set when the codec calls get_buffer().

State is returned to STATE_SETTING_UP afterwards.

STATE_SETUP_FINISHED 

Set after the codec has called ff_thread_finish_setup().

Definition at line 73 of file pthread_frame.c.

Field Documentation

struct FrameThreadContext* PerThreadContext::parent
pthread_t PerThreadContext::thread

Definition at line 56 of file pthread_frame.c.

Referenced by ff_frame_thread_free(), and ff_frame_thread_init().

int PerThreadContext::thread_init

Definition at line 57 of file pthread_frame.c.

Referenced by ff_frame_thread_free(), and ff_frame_thread_init().

pthread_cond_t PerThreadContext::input_cond

Used to wait for a new packet from the main thread.

Definition at line 58 of file pthread_frame.c.

Referenced by ff_frame_thread_free(), ff_frame_thread_init(), frame_worker_thread(), and submit_packet().

pthread_cond_t PerThreadContext::progress_cond

Used by child threads to wait for progress to change.

Definition at line 59 of file pthread_frame.c.

Referenced by ff_frame_thread_free(), ff_frame_thread_init(), ff_thread_await_progress(), ff_thread_finish_setup(), ff_thread_get_buffer(), ff_thread_report_progress(), and submit_packet().

pthread_cond_t PerThreadContext::output_cond

Used by the main thread to wait for frames to finish.

Definition at line 60 of file pthread_frame.c.

Referenced by ff_frame_thread_free(), ff_frame_thread_init(), ff_thread_decode_frame(), frame_worker_thread(), and park_frame_worker_threads().

pthread_mutex_t PerThreadContext::mutex

Mutex used to protect the contents of the PerThreadContext.

Definition at line 62 of file pthread_frame.c.

Referenced by ff_frame_thread_free(), ff_frame_thread_init(), frame_worker_thread(), and submit_packet().

pthread_mutex_t PerThreadContext::progress_mutex
AVCodecContext* PerThreadContext::avctx

Context used to decode packets passed to this thread.

Definition at line 65 of file pthread_frame.c.

Referenced by ff_frame_thread_free(), ff_frame_thread_init(), ff_thread_decode_frame(), ff_thread_flush(), frame_worker_thread(), release_delayed_buffers(), and submit_packet().

AVPacket PerThreadContext::avpkt

Input packet (for decoding) or output (for encoding).

Definition at line 67 of file pthread_frame.c.

Referenced by ff_frame_thread_free(), ff_frame_thread_init(), ff_thread_decode_frame(), frame_worker_thread(), and submit_packet().

AVFrame* PerThreadContext::frame

Output frame (for decoding) or input (for encoding).

Definition at line 69 of file pthread_frame.c.

Referenced by ff_frame_thread_free(), ff_frame_thread_init(), ff_thread_decode_frame(), ff_thread_flush(), and frame_worker_thread().

int PerThreadContext::got_frame

The output of got_picture_ptr from the last avcodec_decode_video() call.

Definition at line 70 of file pthread_frame.c.

Referenced by ff_thread_decode_frame(), ff_thread_flush(), and frame_worker_thread().

int PerThreadContext::result

The result of the last codec decode/encode() call.

Definition at line 71 of file pthread_frame.c.

Referenced by ff_thread_decode_frame(), ff_thread_get_buffer(), frame_worker_thread(), and submit_packet().

enum { ... } PerThreadContext::state
AVFrame* PerThreadContext::released_buffers

Array of frames passed to ff_thread_release_buffer().

Frames are released after all threads referencing them are finished.

Definition at line 87 of file pthread_frame.c.

Referenced by ff_frame_thread_free(), ff_thread_release_buffer(), and release_delayed_buffers().

int PerThreadContext::num_released_buffers

Definition at line 88 of file pthread_frame.c.

Referenced by ff_thread_release_buffer(), and release_delayed_buffers().

int PerThreadContext::released_buffers_allocated

Definition at line 89 of file pthread_frame.c.

Referenced by ff_thread_release_buffer().

AVFrame* PerThreadContext::requested_frame

AVFrame the codec passed to get_buffer()

Definition at line 91 of file pthread_frame.c.

Referenced by ff_thread_get_buffer(), and submit_packet().

int PerThreadContext::requested_flags

flags passed to get_buffer() for requested_frame

Definition at line 92 of file pthread_frame.c.

Referenced by ff_thread_get_buffer(), and submit_packet().


The documentation for this struct was generated from the following file: