FFmpeg
Loading...
Searching...
No Matches
libaribcaption.c File Reference
#include "avcodec.h"
#include "codec_internal.h"
#include "internal.h"
#include "libavcodec/ass.h"
#include "libavutil/avstring.h"
#include "libavutil/avutil.h"
#include "libavutil/mem.h"
#include "libavutil/thread.h"
#include "libavutil/log.h"
#include "libavutil/opt.h"
#include <aribcaption/aribcaption.h>

Go to the source code of this file.

Data Structures

struct  ARIBCaptionContext
 

Macros

#define DEFAULT_FONT_ASS   "sans-serif"
 
#define ARIBC_BPRINT_SIZE_INIT   64
 
#define ARIBC_BPRINT_SIZE_MAX   (8 * 1024)
 
#define ARIBC_ALPHA_MAX_NUM   4
 
#define ARIBC_ALPHA_DEFAULT_FRONT   0xFF
 
#define ARIBC_ALPHA_DEFAULT_BACK   0x80
 
#define ARIBCC_COLOR_RGB(c)
 
#define ARIBCC_COLOR_DIFF_RGB(c1, c2)
 
#define ARIBCC_COLOR_DIFF_A(c1, c2)
 
#define CLUT_RGBA(r, g, b, a)
 
#define CLUT_A(c)
 
#define CLUT_R(c)
 
#define CLUT_G(c)
 
#define CLUT_B(c)
 
#define ARIBCC_COLOR_TO_CLUT_RGBA(c, a)
 
#define ASS_SINGLE_RECT   0
 
#define OFFSET(x)
 
#define SD   AV_OPT_FLAG_SUBTITLE_PARAM | AV_OPT_FLAG_DECODING_PARAM
 

Functions

static void hex_dump_debug (void *ctx, const char *buf, int buf_size)
 
static void logcat_callback (aribcc_loglevel_t level, const char *message, void *userdata)
 
static void estimate_video_frame_size (ARIBCaptionContext *ctx)
 
static void clut_set_alpha (ARIBCaptionContext *ctx, uint8_t a)
 
static uint8_t clut_find_nearlest_alpha (ARIBCaptionContext *ctx, uint8_t a)
 
static int clut_find (ARIBCaptionContext *ctx, uint32_t rgba)
 
static int clut_color_distance (uint32_t rgba1, uint32_t rgba2)
 
static uint8_t clut_pick_or_set (ARIBCaptionContext *ctx, int r, int g, int b, int a)
 
static void clut_init (ARIBCaptionContext *ctx, aribcc_caption_region_t *region)
 
static int aribcaption_trans_bitmap_subtitle (ARIBCaptionContext *ctx)
 aribcaption_trans_{bitmap|ass|text}_subtitle()
 
static int set_ass_header (ARIBCaptionContext *ctx)
 
static void set_ass_color (AVBPrint *buf, int color_num, aribcc_color_t new_color, aribcc_color_t old_color)
 
static int aribcaption_trans_ass_subtitle (ARIBCaptionContext *ctx)
 
static int aribcaption_trans_text_subtitle (ARIBCaptionContext *ctx)
 
static int aribcaption_decode (AVCodecContext *avctx, AVSubtitle *sub, int *got_sub_ptr, const AVPacket *avpkt)
 
static void aribcaption_flush (AVCodecContext *avctx)
 
static av_cold int aribcaption_close (AVCodecContext *avctx)
 
static av_cold int aribcaption_init (AVCodecContext *avctx)
 

Variables

static const AVOption options []
 
static const AVClass aribcaption_class
 
const FFCodec ff_libaribcaption_decoder
 

Macro Definition Documentation

◆ DEFAULT_FONT_ASS

#define DEFAULT_FONT_ASS   "sans-serif"

Definition at line 36 of file libaribcaption.c.

Referenced by set_ass_header().

◆ ARIBC_BPRINT_SIZE_INIT

#define ARIBC_BPRINT_SIZE_INIT   64

Definition at line 39 of file libaribcaption.c.

Referenced by aribcaption_trans_ass_subtitle().

◆ ARIBC_BPRINT_SIZE_MAX

#define ARIBC_BPRINT_SIZE_MAX   (8 * 1024)

Definition at line 40 of file libaribcaption.c.

Referenced by aribcaption_trans_ass_subtitle().

◆ ARIBC_ALPHA_MAX_NUM

#define ARIBC_ALPHA_MAX_NUM   4

Definition at line 41 of file libaribcaption.c.

Referenced by clut_find_nearlest_alpha(), and clut_set_alpha().

◆ ARIBC_ALPHA_DEFAULT_FRONT

#define ARIBC_ALPHA_DEFAULT_FRONT   0xFF

Definition at line 42 of file libaribcaption.c.

Referenced by aribcaption_trans_ass_subtitle(), and clut_init().

◆ ARIBC_ALPHA_DEFAULT_BACK

#define ARIBC_ALPHA_DEFAULT_BACK   0x80

Definition at line 43 of file libaribcaption.c.

Referenced by aribcaption_trans_ass_subtitle(), and clut_init().

◆ ARIBCC_COLOR_RGB

#define ARIBCC_COLOR_RGB ( c)
Value:
((c) & 0xFFFFFF)
static double c[64]

Definition at line 45 of file libaribcaption.c.

Referenced by set_ass_color().

◆ ARIBCC_COLOR_DIFF_RGB

#define ARIBCC_COLOR_DIFF_RGB ( c1,
c2 )
Value:
(((c1) ^ (c2)) & 0x00FFFFFF)
static const uint64_t c2
Definition murmur3.c:53
static const uint64_t c1
Definition murmur3.c:52

Definition at line 46 of file libaribcaption.c.

Referenced by set_ass_color().

◆ ARIBCC_COLOR_DIFF_A

#define ARIBCC_COLOR_DIFF_A ( c1,
c2 )
Value:
(((c1) ^ (c2)) & 0xFF000000)

Definition at line 47 of file libaribcaption.c.

Referenced by set_ass_color().

◆ CLUT_RGBA

#define CLUT_RGBA ( r,
g,
b,
a )
Value:
(((unsigned)(a) << 24) | ((r) << 16) | ((g) << 8) | (b))
int a
#define r
Definition input.c:42
#define b
Definition input.c:43
const char * g
Definition vf_curves.c:128

Definition at line 49 of file libaribcaption.c.

Referenced by clut_init(), and clut_pick_or_set().

◆ CLUT_A

#define CLUT_A ( c)
Value:
(((c) >> 24) & 0xFF)

Definition at line 50 of file libaribcaption.c.

Referenced by clut_init(), and clut_pick_or_set().

◆ CLUT_R

#define CLUT_R ( c)
Value:
(((c) >> 16) & 0xFF)

Definition at line 51 of file libaribcaption.c.

Referenced by clut_color_distance().

◆ CLUT_G

#define CLUT_G ( c)
Value:
(((c) >> 8) & 0xFF)

Definition at line 52 of file libaribcaption.c.

Referenced by clut_color_distance().

◆ CLUT_B

#define CLUT_B ( c)
Value:
( (c) & 0xFF)

Definition at line 53 of file libaribcaption.c.

Referenced by clut_color_distance().

◆ ARIBCC_COLOR_TO_CLUT_RGBA

#define ARIBCC_COLOR_TO_CLUT_RGBA ( c,
a )
Value:
(((ARIBCC_COLOR_A(c) ? ARIBCC_COLOR_A(c) : (a)) << 24) | \
(ARIBCC_COLOR_R(c) << 16) | \
(ARIBCC_COLOR_G(c) << 8) | \
(ARIBCC_COLOR_B(c)))

Definition at line 55 of file libaribcaption.c.

Referenced by clut_init().

◆ ASS_SINGLE_RECT

#define ASS_SINGLE_RECT   0

Definition at line 1110 of file libaribcaption.c.

◆ OFFSET

#define OFFSET ( x)
Value:

Definition at line 1113 of file libaribcaption.c.

◆ SD

Definition at line 1114 of file libaribcaption.c.

Function Documentation

◆ hex_dump_debug()

static void hex_dump_debug ( void * ctx,
const char * buf,
int buf_size )
static

Definition at line 106 of file libaribcaption.c.

◆ logcat_callback()

static void logcat_callback ( aribcc_loglevel_t level,
const char * message,
void * userdata )
static

Definition at line 119 of file libaribcaption.c.

Referenced by aribcaption_init().

◆ estimate_video_frame_size()

static void estimate_video_frame_size ( ARIBCaptionContext * ctx)
static

Definition at line 140 of file libaribcaption.c.

Referenced by aribcaption_init(), and aribcaption_trans_bitmap_subtitle().

◆ clut_set_alpha()

static void clut_set_alpha ( ARIBCaptionContext * ctx,
uint8_t a )
static

Definition at line 165 of file libaribcaption.c.

Referenced by clut_init().

◆ clut_find_nearlest_alpha()

static uint8_t clut_find_nearlest_alpha ( ARIBCaptionContext * ctx,
uint8_t a )
static

Definition at line 180 of file libaribcaption.c.

Referenced by clut_pick_or_set().

◆ clut_find()

static int clut_find ( ARIBCaptionContext * ctx,
uint32_t rgba )
static

Definition at line 201 of file libaribcaption.c.

Referenced by clut_init().

◆ clut_color_distance()

static int clut_color_distance ( uint32_t rgba1,
uint32_t rgba2 )
inlinestatic

Definition at line 212 of file libaribcaption.c.

Referenced by clut_pick_or_set().

◆ clut_pick_or_set()

static uint8_t clut_pick_or_set ( ARIBCaptionContext * ctx,
int r,
int g,
int b,
int a )
static

Definition at line 219 of file libaribcaption.c.

Referenced by aribcaption_trans_bitmap_subtitle().

◆ clut_init()

static void clut_init ( ARIBCaptionContext * ctx,
aribcc_caption_region_t * region )
static

Definition at line 254 of file libaribcaption.c.

Referenced by aribcaption_trans_bitmap_subtitle().

◆ aribcaption_trans_bitmap_subtitle()

static int aribcaption_trans_bitmap_subtitle ( ARIBCaptionContext * ctx)
static

aribcaption_trans_{bitmap|ass|text}_subtitle()

Transfer decoded subtitle to AVSubtitle with corresponding subtitle type.

Parameters
ctxpointer to the ARIBCaptionContext
Returns
> 0 number of rectangles to be displayed = 0 no subtitle < 0 error code

Definition at line 317 of file libaribcaption.c.

Referenced by aribcaption_decode().

◆ set_ass_header()

static int set_ass_header ( ARIBCaptionContext * ctx)
static

Definition at line 499 of file libaribcaption.c.

Referenced by aribcaption_init(), and aribcaption_trans_ass_subtitle().

◆ set_ass_color()

static void set_ass_color ( AVBPrint * buf,
int color_num,
aribcc_color_t new_color,
aribcc_color_t old_color )
static

Definition at line 571 of file libaribcaption.c.

Referenced by aribcaption_trans_ass_subtitle().

◆ aribcaption_trans_ass_subtitle()

static int aribcaption_trans_ass_subtitle ( ARIBCaptionContext * ctx)
static

Definition at line 582 of file libaribcaption.c.

Referenced by aribcaption_decode().

◆ aribcaption_trans_text_subtitle()

static int aribcaption_trans_text_subtitle ( ARIBCaptionContext * ctx)
static

Definition at line 792 of file libaribcaption.c.

Referenced by aribcaption_decode().

◆ aribcaption_decode()

static int aribcaption_decode ( AVCodecContext * avctx,
AVSubtitle * sub,
int * got_sub_ptr,
const AVPacket * avpkt )
static

Definition at line 844 of file libaribcaption.c.

◆ aribcaption_flush()

static void aribcaption_flush ( AVCodecContext * avctx)
static

Definition at line 930 of file libaribcaption.c.

◆ aribcaption_close()

static av_cold int aribcaption_close ( AVCodecContext * avctx)
static

Definition at line 942 of file libaribcaption.c.

◆ aribcaption_init()

static av_cold int aribcaption_init ( AVCodecContext * avctx)
static

Definition at line 957 of file libaribcaption.c.

Variable Documentation

◆ options

const AVOption options[]
static

Definition at line 1115 of file libaribcaption.c.

◆ aribcaption_class

const AVClass aribcaption_class
static
Initial value:
= {
.class_name = "aribcaption decoder",
.item_name = av_default_item_name,
.option = options,
}
const char * av_default_item_name(void *ptr)
Return the context name.
Definition log.c:241
#define LIBAVUTIL_VERSION_INT
Definition version.h:85

Definition at line 1163 of file libaribcaption.c.

◆ ff_libaribcaption_decoder

const FFCodec ff_libaribcaption_decoder
Initial value:
= {
.p.name = "libaribcaption",
.p.long_name = NULL_IF_CONFIG_SMALL("ARIB STD-B24 caption decoder"),
.priv_data_size = sizeof(ARIBCaptionContext),
.p.priv_class = &aribcaption_class,
.caps_internal = FF_CODEC_CAP_INIT_CLEANUP,
}
static av_cold void close(AVCodecParserContext *s)
Definition apv_parser.c:197
#define FF_CODEC_CAP_INIT_CLEANUP
The codec allows calling the close function for deallocation even if the init function returned a fai...
#define FF_CODEC_DECODE_SUB_CB(func)
int(* init)(AVBSFContext *ctx)
Definition dts2pts.c:608
@ AV_CODEC_ID_ARIB_CAPTION
Definition codec_id.h:591
@ AVMEDIA_TYPE_SUBTITLE
Definition avutil.h:203
static av_cold int aribcaption_close(AVCodecContext *avctx)
static void aribcaption_flush(AVCodecContext *avctx)
static const AVClass aribcaption_class
static int aribcaption_decode(AVCodecContext *avctx, AVSubtitle *sub, int *got_sub_ptr, const AVPacket *avpkt)
static av_cold int aribcaption_init(AVCodecContext *avctx)
#define NULL_IF_CONFIG_SMALL(x)
Return NULL if CONFIG_SMALL is true, otherwise the argument without modification.
Definition internal.h:88

Definition at line 1170 of file libaribcaption.c.