FFmpeg
Loading...
Searching...
No Matches
frame_thread_encoder.c File Reference
#include <stdatomic.h>
#include "frame_thread_encoder.h"
#include "libavutil/avassert.h"
#include "libavutil/cpu.h"
#include "libavutil/mem.h"
#include "libavutil/opt.h"
#include "libavutil/thread.h"
#include "avcodec.h"
#include "avcodec_internal.h"
#include "codec_par.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)
 
#define DUP_MATRIX(m)
 

Functions

 DEFINE_OFFSET_ARRAY (ThreadContext, thread_ctx, pthread_init_cnt,(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.
 
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

◆ BUFFER_SIZE

◆ OFF

#define OFF ( member)
Value:

Definition at line 72 of file frame_thread_encoder.c.

◆ DUP_MATRIX

#define DUP_MATRIX ( m)
Value:
if (avctx->m) { \
thread_avctx->m = av_memdup(avctx->m, 64 * sizeof(*avctx->m)); \
if (!thread_avctx->m) { \
ret = AVERROR(ENOMEM); \
goto fail; \
} \
}
#define fail
Definition test.h:479
#define AVERROR(e)
Definition error.h:45
void * av_memdup(const void *p, size_t size)
Duplicate a buffer with av_malloc().
Definition mem.c:302

Referenced by ff_frame_thread_encoder_init().

Function Documentation

◆ DEFINE_OFFSET_ARRAY()

DEFINE_OFFSET_ARRAY ( ThreadContext ,
thread_ctx ,
pthread_init_cnt ,
(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 78 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 120 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 275 of file frame_thread_encoder.c.

Referenced by ff_codec_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 301 of file frame_thread_encoder.c.

Referenced by encode_simple_internal().