FFmpeg
Loading...
Searching...
No Matches
opus_metadata.c
Go to the documentation of this file.
1/*
2 * This file is part of FFmpeg.
3 *
4 * FFmpeg is free software; you can redistribute it and/or
5 * modify it under the terms of the GNU Lesser General Public
6 * License as published by the Free Software Foundation; either
7 * version 2.1 of the License, or (at your option) any later version.
8 *
9 * FFmpeg is distributed in the hope that it will be useful,
10 * but WITHOUT ANY WARRANTY; without even the implied warranty of
11 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
12 * Lesser General Public License for more details.
13 *
14 * You should have received a copy of the GNU Lesser General Public
15 * License along with FFmpeg; if not, write to the Free Software
16 * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
17 */
18
19#include "libavcodec/bsf.h"
22#include "libavutil/opt.h"
23
24typedef struct OpusBSFContext {
25 const AVClass *class;
26 int gain;
28
30{
31 OpusBSFContext *s = bsfc->priv_data;
32
33 if (bsfc->par_out->extradata_size < 19)
35
36 AV_WL16(bsfc->par_out->extradata + 16, s->gain);
37
38 return 0;
39}
40
41#define OFFSET(x) offsetof(OpusBSFContext, x)
42#define FLAGS (AV_OPT_FLAG_AUDIO_PARAM|AV_OPT_FLAG_BSF_PARAM)
44 { "gain", "Gain, actual amplification is pow(10, gain/(20.0*256))", OFFSET(gain),
45 AV_OPT_TYPE_INT, { .i64 = 0 }, -(INT16_MAX + 1), INT16_MAX, .flags = FLAGS },
46
47 { NULL },
48};
49
51 .class_name = "opus_metadata_bsf",
52 .item_name = av_default_item_name,
53 .option = opus_metadata_options,
54 .version = LIBAVUTIL_VERSION_INT,
55};
56
57static const enum AVCodecID codec_ids[] = {
59};
60
62 .p.name = "opus_metadata",
63 .p.codec_ids = codec_ids,
64 .p.priv_class = &opus_metadata_class,
65 .priv_data_size = sizeof(OpusBSFContext),
68};
static enum AVCodecID codec_ids[]
const FFBitStreamFilter ff_opus_metadata_bsf
int ff_bsf_get_packet_ref(AVBSFContext *ctx, AVPacket *pkt)
Called by bitstream filters to get packet for filtering.
Definition bsf.c:254
#define flags(name, subs,...)
Definition cbs_h264.c:74
#define s(width, name)
Definition cbs_vp9.c:198
#define FLAGS
Definition cmdutils.c:598
#define NULL
Definition coverity.c:32
int(* init)(AVBSFContext *ctx)
Definition dts2pts.c:608
@ AV_OPT_TYPE_INT
Underlying C type is int.
Definition opt.h:258
AVCodecID
Identify the syntax and semantics of the bitstream.
Definition codec_id.h:47
@ AV_CODEC_ID_NONE
Definition codec_id.h:48
@ AV_CODEC_ID_OPUS
Definition codec_id.h:513
#define AVERROR_INVALIDDATA
Invalid data found when processing input.
Definition error.h:61
const char * av_default_item_name(void *ptr)
Return the context name.
Definition log.c:241
#define LIBAVUTIL_VERSION_INT
Definition version.h:85
#define AV_WL16(p, v)
AVOptions.
static const AVOption opus_metadata_options[]
#define OFFSET(x)
static const AVClass opus_metadata_class
static int opus_metadata_init(AVBSFContext *bsfc)
The bitstream filter state.
Definition bsf.h:68
void * priv_data
Opaque filter-specific private data.
Definition bsf.h:83
AVCodecParameters * par_out
Parameters of the output stream.
Definition bsf.h:96
Describe the class of an AVClass context structure.
Definition log.h:76
int extradata_size
Size of the extradata content in bytes.
Definition codec_par.h:75
uint8_t * extradata
Extra binary data needed for initializing the decoder, codec-dependent.
Definition codec_par.h:71
AVOption.
Definition opt.h:428
void(* filter)(uint8_t *src, ptrdiff_t stride, int qscale)
Definition h263dsp.c:29