FFmpeg
Data Structures | Macros | Functions
frame_thread_encoder.c File Reference
#include <stdatomic.h>
#include "frame_thread_encoder.h"
#include "libavutil/avassert.h"
#include "libavutil/cpu.h"
#include "libavutil/opt.h"
#include "libavutil/thread.h"
#include "avcodec.h"
#include "encode.h"
#include "internal.h"
#include "pthread_internal.h"

Go to the source code of this file.

Data Structures

struct  Task
 
struct  ThreadContext
 

Macros

#define MAX_THREADS   64
 
#define BUFFER_SIZE   (MAX_THREADS + 2)
 
#define OFF(member)   offsetof(ThreadContext, member)
 

Functions

 DEFINE_OFFSET_ARRAY (ThreadContext, thread_ctx, pthread_init_cnt,(OFF(buffer_mutex), OFF(task_fifo_mutex), OFF(finished_task_mutex)),(OFF(task_fifo_cond), OFF(finished_task_cond)))
 
static void *attribute_align_arg worker (void *v)
 
av_cold int ff_frame_thread_encoder_init (AVCodecContext *avctx)
 Initialize frame thread encoder. More...
 
av_cold void ff_frame_thread_encoder_free (AVCodecContext *avctx)
 
int ff_thread_video_encode_frame (AVCodecContext *avctx, AVPacket *pkt, AVFrame *frame, int *got_packet_ptr)
 

Macro Definition Documentation

◆ MAX_THREADS

#define MAX_THREADS   64

Definition at line 34 of file frame_thread_encoder.c.

◆ BUFFER_SIZE

#define BUFFER_SIZE   (MAX_THREADS + 2)

Definition at line 39 of file frame_thread_encoder.c.

◆ OFF

#define OFF (   member)    offsetof(ThreadContext, member)

Definition at line 72 of file frame_thread_encoder.c.

Function Documentation

◆ DEFINE_OFFSET_ARRAY()

DEFINE_OFFSET_ARRAY ( ThreadContext  ,
thread_ctx  ,
pthread_init_cnt  ,
(OFF(buffer_mutex), OFF(task_fifo_mutex), OFF(finished_task_mutex))  ,
(OFF(task_fifo_cond), OFF(finished_task_cond))   
)

◆ worker()

static void* attribute_align_arg worker ( void *  v)
static

Definition at line 84 of file frame_thread_encoder.c.

Referenced by ff_frame_thread_encoder_init().

◆ ff_frame_thread_encoder_init()

av_cold int ff_frame_thread_encoder_init ( AVCodecContext avctx)

Initialize frame thread encoder.

Note
hardware encoders are not supported

Definition at line 138 of file frame_thread_encoder.c.

Referenced by ff_encode_preinit().

◆ ff_frame_thread_encoder_free()

av_cold void ff_frame_thread_encoder_free ( AVCodecContext avctx)

Definition at line 261 of file frame_thread_encoder.c.

Referenced by avcodec_close(), and ff_frame_thread_encoder_init().

◆ ff_thread_video_encode_frame()

int ff_thread_video_encode_frame ( AVCodecContext avctx,
AVPacket pkt,
AVFrame frame,
int got_packet_ptr 
)

Definition at line 287 of file frame_thread_encoder.c.

Referenced by encode_simple_internal().