26#include <chromaprint.h>
28#define CPR_VERSION_INT AV_VERSION_INT(CHROMAPRINT_VERSION_MAJOR, \
29 CHROMAPRINT_VERSION_MINOR, \
30 CHROMAPRINT_VERSION_PATCH)
46#if CPR_VERSION_INT >= AV_VERSION_INT(1, 4, 0)
47 ChromaprintContext *
ctx;
49 ChromaprintContext
ctx;
59 chromaprint_free(cpr->
ctx);
79#if CPR_VERSION_INT >= AV_VERSION_INT(0, 7, 0)
81 av_log(
s,
AV_LOG_ERROR,
"Failed to set silence threshold. Setting silence_threshold requires -algorithm 3 option.\n");
86 "version 0.7.0 or later.\n");
114 return chromaprint_feed(cpr->
ctx, (
const int16_t *)
pkt->data,
pkt->size / 2) ? 0 :
AVERROR(EINVAL);
125 if (!chromaprint_finish(cpr->
ctx)) {
130 if (!chromaprint_get_raw_fingerprint(cpr->
ctx, (uint32_t **)&fp, &
size)) {
141 if (!chromaprint_encode_fingerprint(fp,
size, cpr->
algorithm, &enc_fp, &enc_size,
153 chromaprint_dealloc(fp);
155 chromaprint_dealloc(enc_fp);
159#define OFFSET(x) offsetof(ChromaprintMuxContext, x)
160#define FLAGS AV_OPT_FLAG_ENCODING_PARAM
162 {
"silence_threshold",
"threshold for detecting silence",
OFFSET(silence_threshold),
AV_OPT_TYPE_INT, { .i64 = -1 }, -1, 32767,
FLAGS },
163 {
"algorithm",
"version of the fingerprint algorithm",
OFFSET(algorithm),
AV_OPT_TYPE_INT, { .i64 = CHROMAPRINT_ALGORITHM_DEFAULT }, CHROMAPRINT_ALGORITHM_TEST1, INT_MAX,
FLAGS },
172 .class_name =
"chromaprint muxer",
179 .p.name =
"chromaprint",
void avio_write(AVIOContext *s, const unsigned char *buf, int size)
static void deinit(AVFormatContext *s)
static int write_packet(AVFormatContext *s, AVPacket *pkt)
static const AVClass chromaprint_class
static AVMutex chromaprint_mutex
static int write_trailer(AVFormatContext *s)
int(* init)(AVBSFContext *ctx)
static int write_packet(Muxer *mux, OutputStream *ost, AVPacket *pkt)
@ AV_OPT_TYPE_CONST
Special option type for declaring named constants.
@ AV_OPT_TYPE_INT
Underlying C type is int.
#define AVERROR_EXTERNAL
Generic error in an external library.
#define AV_LOG_ERROR
Something went wrong and cannot losslessly be recovered.
const char * av_default_item_name(void *ptr)
Return the context name.
#define LIBAVUTIL_VERSION_INT
#define NULL_IF_CONFIG_SMALL(x)
Return NULL if CONFIG_SMALL is true, otherwise the argument without modification.
#define AV_MUTEX_INITIALIZER
static int ff_mutex_unlock(AVMutex *mutex)
static int ff_mutex_lock(AVMutex *mutex)
#define FF_OFMT_FLAG_MAX_ONE_OF_EACH
If this flag is set, it indicates that for each codec type whose corresponding default codec (i....
#define FF_OFMT_FLAG_ONLY_DEFAULT_CODECS
If this flag is set, then the only permitted audio/video/subtitle codec ids are AVOutputFormat....
int nb_channels
Number of channels in this layout.
Describe the class of an AVClass context structure.
AVChannelLayout ch_layout
The channel layout and number of channels.
int sample_rate
The number of audio samples per second.
This structure stores compressed data.
AVCodecParameters * codecpar
Codec parameters associated with this stream.
static int write_trailer(AVFormatContext *s1)