UltraGrid
UltraGrid Low-Latency High-Resolution Transmission System
Loading...
Searching...
No Matches
codec.h
Go to the documentation of this file.
1
5/*
6 * Copyright (c) 2013-2023 CESNET, z. s. p. o.
7 * All rights reserved.
8 *
9 * Redistribution and use in source and binary forms, with or without
10 * modification, is permitted provided that the following conditions
11 * are met:
12 *
13 * 1. Redistributions of source code must retain the above copyright
14 * notice, this list of conditions and the following disclaimer.
15 *
16 * 2. Redistributions in binary form must reproduce the above copyright
17 * notice, this list of conditions and the following disclaimer in the
18 * documentation and/or other materials provided with the distribution.
19 *
20 * 3. Neither the name of CESNET nor the names of its contributors may be
21 * used to endorse or promote products derived from this software without
22 * specific prior written permission.
23 *
24 * THIS SOFTWARE IS PROVIDED BY THE AUTHORS AND CONTRIBUTORS
25 * "AS IS" AND ANY EXPRESSED OR IMPLIED WARRANTIES, INCLUDING,
26 * BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY
27 * AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO
28 * EVENT SHALL THE AUTHORS OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT,
29 * INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
30 * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR
31 * SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
32 * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
33 * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR
34 * OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE,
35 * EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
36 */
37
38#ifndef AUDIO_CODEC_H_
39#define AUDIO_CODEC_H_
40
41#include "audio/types.h"
42
43#define AUDIO_COMPRESS_ABI_VERSION 4
44
49
52 void *(*init)(audio_codec_t, audio_codec_direction_t, bool, int bitrate);
53 audio_channel *(*compress)(void *, audio_channel *);
54 audio_channel *(*decompress)(void *, audio_channel *);
55 const int *(*get_samplerates)(void *);
57 const char *(*get_codec_info)(void *, size_t buflen, char *buffer);
58 void (*done)(void *);
59};
60
61typedef struct {
62 const char *name;
66 uint32_t tag;
68
69#ifdef __cplusplus
70#include <string>
71#include <tuple>
73
75struct audio_codec_state *audio_codec_init_cfg(const char *audio_codec_cfg, audio_codec_direction_t);
82
83std::vector<std::tuple<audio_codec_info_t, bool, std::string>>
85#endif
86
87#ifdef __cplusplus
88extern "C" {
89#endif // defined __cplusplus
90void list_audio_codecs(void);
91
97struct audio_codec_params parse_audio_codec_params(const char *ccfg);
98
101audio_codec_t get_audio_codec_to_tag(uint32_t audio_tag);
102
103#ifdef __cplusplus
104}
105#endif // defined __cplusplus
106
107#endif /* AUDIO_CODEC_H */
This file contains definition of some common audio types.
audio_codec_t
Definition types.h:51
audio_frame2 audio_codec_compress(struct audio_codec_state *, const audio_frame2 *)
Definition codec.cpp:245
const int * audio_codec_get_supported_samplerates(struct audio_codec_state *)
Definition codec.cpp:367
struct audio_codec_state * audio_codec_init(audio_codec_t audio_codec, audio_codec_direction_t)
Definition codec.cpp:160
audio_frame2 audio_codec_decompress(struct audio_codec_state *, audio_frame2 *)
Definition codec.cpp:299
struct audio_codec_params parse_audio_codec_params(const char *ccfg)
Definition codec.cpp:402
const char * get_name_to_audio_codec(audio_codec_t codec)
Definition codec.cpp:450
audio_codec_t get_audio_codec_to_tag(uint32_t audio_tag)
Definition codec.cpp:460
audio_codec_direction_t
Definition codec.h:45
@ AUDIO_DECODER
Definition codec.h:47
@ AUDIO_CODER
Definition codec.h:46
std::vector< std::tuple< audio_codec_info_t, bool, std::string > > get_audio_codec_list()
Definition codec.cpp:109
void audio_codec_done(struct audio_codec_state *)
Definition codec.cpp:372
struct audio_codec_state * audio_codec_init_cfg(const char *audio_codec_cfg, audio_codec_direction_t)
Definition codec.cpp:165
struct audio_codec_state * audio_codec_reconfigure(struct audio_codec_state *old, audio_codec_t audio_codec, audio_codec_direction_t)
Definition codec.cpp:225
uint32_t get_audio_tag(audio_codec_t codec)
Definition codec.cpp:455
void list_audio_codecs(void)
Definition codec.cpp:132
Audio channel is a non-owning view on audio_frame2 isolating one channel.
Definition types.h:122
uint32_t tag
TwoCC if defined, otherwise we define our tag.
Definition codec.h:66
const char * name
Definition codec.h:62
audio_codec_t codec
Definition codec.h:93
void(* done)(void *)
Definition codec.h:58
const audio_codec_t * supported_codecs
Definition codec.h:51