decoder/flac: use C++ compiler
This commit is contained in:
		
							
								
								
									
										13
									
								
								Makefile.am
									
									
									
									
									
								
							
							
						
						
									
										13
									
								
								Makefile.am
									
									
									
									
									
								
							| @@ -98,8 +98,6 @@ mpd_headers = \ | ||||
| 	src/gcc.h \ | ||||
| 	src/decoder_list.h \ | ||||
| 	src/decoder_print.h \ | ||||
| 	src/decoder/flac_metadata.h \ | ||||
| 	src/decoder/flac_pcm.h \ | ||||
| 	src/decoder/pcm_decoder_plugin.h \ | ||||
| 	src/input_init.h \ | ||||
| 	src/input_plugin.h \ | ||||
| @@ -620,10 +618,11 @@ endif | ||||
|  | ||||
| if HAVE_FLAC | ||||
| libdecoder_plugins_a_SOURCES += \ | ||||
| 	src/decoder/flac_metadata.c \ | ||||
| 	src/decoder/flac_pcm.c \ | ||||
| 	src/decoder/flac_common.c src/decoder/flac_common.h \ | ||||
| 	src/decoder/flac_decoder_plugin.c | ||||
| 	src/decoder/FLACMetaData.cxx src/decoder/FLACMetaData.hxx \ | ||||
| 	src/decoder/FLAC_PCM.cxx src/decoder/FLAC_PCM.hxx \ | ||||
| 	src/decoder/FLACCommon.cxx src/decoder/FLACCommon.hxx \ | ||||
| 	src/decoder/FLACDecoderPlugin.cxx \ | ||||
| 	src/decoder/FLACDecoderPlugin.h | ||||
| endif | ||||
|  | ||||
| if HAVE_AUDIOFILE | ||||
| @@ -1145,7 +1144,7 @@ test_dump_playlist_SOURCES = test/dump_playlist.c \ | ||||
| if HAVE_FLAC | ||||
| test_dump_playlist_SOURCES += \ | ||||
| 	src/replay_gain_info.c \ | ||||
| 	src/decoder/flac_metadata.c | ||||
| 	src/decoder/FLACMetaData.cxx | ||||
| endif | ||||
|  | ||||
| test_run_decoder_LDADD = \ | ||||
|   | ||||
| @@ -1,5 +1,5 @@ | ||||
| /*
 | ||||
|  * Copyright (C) 2003-2011 The Music Player Daemon Project | ||||
|  * Copyright (C) 2003-2012 The Music Player Daemon Project | ||||
|  * http://www.musicpd.org
 | ||||
|  * | ||||
|  * This program is free software; you can redistribute it and/or modify | ||||
| @@ -22,10 +22,13 @@ | ||||
|  */ | ||||
| 
 | ||||
| #include "config.h" | ||||
| #include "flac_common.h" | ||||
| #include "flac_metadata.h" | ||||
| #include "flac_pcm.h" | ||||
| #include "FLACCommon.hxx" | ||||
| #include "FLACMetaData.hxx" | ||||
| #include "FLAC_PCM.hxx" | ||||
| 
 | ||||
| extern "C" { | ||||
| #include "audio_check.h" | ||||
| } | ||||
| 
 | ||||
| #include <glib.h> | ||||
| 
 | ||||
| @@ -46,7 +49,7 @@ flac_data_init(struct flac_data *data, struct decoder * decoder, | ||||
| 	data->position = 0; | ||||
| 	data->decoder = decoder; | ||||
| 	data->input_stream = input_stream; | ||||
| 	data->tag = NULL; | ||||
| 	data->tag = nullptr; | ||||
| } | ||||
| 
 | ||||
| void | ||||
| @@ -54,7 +57,7 @@ flac_data_deinit(struct flac_data *data) | ||||
| { | ||||
| 	pcm_buffer_deinit(&data->buffer); | ||||
| 
 | ||||
| 	if (data->tag != NULL) | ||||
| 	if (data->tag != nullptr) | ||||
| 		tag_free(data->tag); | ||||
| } | ||||
| 
 | ||||
| @@ -86,7 +89,7 @@ flac_got_stream_info(struct flac_data *data, | ||||
| 	if (data->initialized || data->unsupported) | ||||
| 		return; | ||||
| 
 | ||||
| 	GError *error = NULL; | ||||
| 	GError *error = nullptr; | ||||
| 	if (!audio_format_init_checked(&data->audio_format, | ||||
| 				       stream_info->sample_rate, | ||||
| 				       flac_sample_format(stream_info->bits_per_sample), | ||||
| @@ -129,8 +132,8 @@ void flac_metadata_common_cb(const FLAC__StreamMetadata * block, | ||||
| 			decoder_mixramp(data->decoder, replay_gain_db, | ||||
| 					mixramp_start, mixramp_end); | ||||
| 
 | ||||
| 		if (data->tag != NULL) | ||||
| 			flac_vorbis_comments_to_tag(data->tag, NULL, | ||||
| 		if (data->tag != nullptr) | ||||
| 			flac_vorbis_comments_to_tag(data->tag, nullptr, | ||||
| 						    &block->data.vorbis_comment); | ||||
| 
 | ||||
| 	default: | ||||
| @@ -160,7 +163,7 @@ flac_got_first_frame(struct flac_data *data, const FLAC__FrameHeader *header) | ||||
| 	if (data->unsupported) | ||||
| 		return false; | ||||
| 
 | ||||
| 	GError *error = NULL; | ||||
| 	GError *error = nullptr; | ||||
| 	if (!audio_format_init_checked(&data->audio_format, | ||||
| 				       header->sample_rate, | ||||
| 				       flac_sample_format(header->bits_per_sample), | ||||
| @@ -199,7 +202,7 @@ flac_common_write(struct flac_data *data, const FLAC__Frame * frame, | ||||
| 	buffer = pcm_buffer_get(&data->buffer, buffer_size); | ||||
| 
 | ||||
| 	flac_convert(buffer, frame->header.channels, | ||||
| 		     data->audio_format.format, buf, | ||||
| 		     (enum sample_format)data->audio_format.format, buf, | ||||
| 		     0, frame->header.blocksize); | ||||
| 
 | ||||
| 	if (nbytes > 0) | ||||
| @@ -1,5 +1,5 @@ | ||||
| /*
 | ||||
|  * Copyright (C) 2003-2011 The Music Player Daemon Project | ||||
|  * Copyright (C) 2003-2012 The Music Player Daemon Project | ||||
|  * http://www.musicpd.org
 | ||||
|  * | ||||
|  * This program is free software; you can redistribute it and/or modify | ||||
| @@ -21,11 +21,13 @@ | ||||
|  * Common data structures and functions used by FLAC and OggFLAC | ||||
|  */ | ||||
| 
 | ||||
| #ifndef MPD_FLAC_COMMON_H | ||||
| #define MPD_FLAC_COMMON_H | ||||
| #ifndef MPD_FLAC_COMMON_HXX | ||||
| #define MPD_FLAC_COMMON_HXX | ||||
| 
 | ||||
| extern "C" { | ||||
| #include "decoder_api.h" | ||||
| #include "pcm_buffer.h" | ||||
| } | ||||
| 
 | ||||
| #include <FLAC/stream_decoder.h> | ||||
| #include <FLAC/metadata.h> | ||||
| @@ -1,5 +1,5 @@ | ||||
| /*
 | ||||
|  * Copyright (C) 2003-2011 The Music Player Daemon Project | ||||
|  * Copyright (C) 2003-2012 The Music Player Daemon Project | ||||
|  * http://www.musicpd.org
 | ||||
|  * | ||||
|  * This program is free software; you can redistribute it and/or modify | ||||
| @@ -18,9 +18,13 @@ | ||||
|  */ | ||||
| 
 | ||||
| #include "config.h" /* must be first for large file support */ | ||||
| #include "flac_common.h" | ||||
| #include "flac_metadata.h" | ||||
| #include "FLACDecoderPlugin.h" | ||||
| #include "FLACCommon.hxx" | ||||
| #include "FLACMetaData.hxx" | ||||
| 
 | ||||
| extern "C" { | ||||
| #include "ogg_codec.h" | ||||
| } | ||||
| 
 | ||||
| #include <glib.h> | ||||
| 
 | ||||
| @@ -41,7 +45,7 @@ flac_read_cb(G_GNUC_UNUSED const FLAC__StreamDecoder *fd, | ||||
| 	     FLAC__byte buf[], size_t *bytes, | ||||
| 	     void *fdata) | ||||
| { | ||||
| 	struct flac_data *data = fdata; | ||||
| 	struct flac_data *data = (struct flac_data *)fdata; | ||||
| 	size_t r; | ||||
| 
 | ||||
| 	r = decoder_read(data->decoder, data->input_stream, | ||||
| @@ -69,7 +73,7 @@ flac_seek_cb(G_GNUC_UNUSED const FLAC__StreamDecoder *fd, | ||||
| 		return FLAC__STREAM_DECODER_SEEK_STATUS_UNSUPPORTED; | ||||
| 
 | ||||
| 	if (!input_stream_lock_seek(data->input_stream, offset, SEEK_SET, | ||||
| 				    NULL)) | ||||
| 				    nullptr)) | ||||
| 		return FLAC__STREAM_DECODER_SEEK_STATUS_ERROR; | ||||
| 
 | ||||
| 	return FLAC__STREAM_DECODER_SEEK_STATUS_OK; | ||||
| @@ -172,7 +176,7 @@ static bool | ||||
| flac_scan_file(const char *file, | ||||
| 	       const struct tag_handler *handler, void *handler_ctx) | ||||
| { | ||||
| 	return flac_scan_file2(file, NULL, handler, handler_ctx); | ||||
| 	return flac_scan_file2(file, nullptr, handler, handler_ctx); | ||||
| } | ||||
| 
 | ||||
| /**
 | ||||
| @@ -182,9 +186,9 @@ static FLAC__StreamDecoder * | ||||
| flac_decoder_new(void) | ||||
| { | ||||
| 	FLAC__StreamDecoder *sd = FLAC__stream_decoder_new(); | ||||
| 	if (sd == NULL) { | ||||
| 	if (sd == nullptr) { | ||||
| 		g_warning("FLAC__stream_decoder_new() failed"); | ||||
| 		return NULL; | ||||
| 		return nullptr; | ||||
| 	} | ||||
| 
 | ||||
| 	if(!FLAC__stream_decoder_set_metadata_respond(sd, FLAC__METADATA_TYPE_VORBIS_COMMENT)) | ||||
| @@ -234,7 +238,7 @@ flac_decoder_loop(struct flac_data *data, FLAC__StreamDecoder *flac_dec, | ||||
| 	data->first_frame = t_start; | ||||
| 
 | ||||
| 	while (true) { | ||||
| 		if (data->tag != NULL && !tag_is_empty(data->tag)) { | ||||
| 		if (data->tag != nullptr && !tag_is_empty(data->tag)) { | ||||
| 			cmd = decoder_tag(data->decoder, data->input_stream, | ||||
| 					  data->tag); | ||||
| 			tag_free(data->tag); | ||||
| @@ -316,7 +320,7 @@ flac_decode_internal(struct decoder * decoder, | ||||
| 	struct flac_data data; | ||||
| 
 | ||||
| 	flac_dec = flac_decoder_new(); | ||||
| 	if (flac_dec == NULL) | ||||
| 	if (flac_dec == nullptr) | ||||
| 		return; | ||||
| 
 | ||||
| 	flac_data_init(&data, decoder, input_stream); | ||||
| @@ -378,7 +382,7 @@ oggflac_scan_file(const char *file, | ||||
| 		if (!(block = FLAC__metadata_iterator_get_block(it))) | ||||
| 			break; | ||||
| 
 | ||||
| 		flac_scan_metadata(NULL, block, | ||||
| 		flac_scan_metadata(nullptr, block, | ||||
| 				   handler, handler_ctx); | ||||
| 	} while (FLAC__metadata_iterator_next(it)); | ||||
| 	FLAC__metadata_iterator_delete(it); | ||||
| @@ -395,43 +399,52 @@ oggflac_decode(struct decoder *decoder, struct input_stream *input_stream) | ||||
| 
 | ||||
| 	/* rewind the stream, because ogg_codec_detect() has
 | ||||
| 	   moved it */ | ||||
| 	input_stream_lock_seek(input_stream, 0, SEEK_SET, NULL); | ||||
| 	input_stream_lock_seek(input_stream, 0, SEEK_SET, nullptr); | ||||
| 
 | ||||
| 	flac_decode_internal(decoder, input_stream, true); | ||||
| } | ||||
| 
 | ||||
| static const char *const oggflac_suffixes[] = { "ogg", "oga", NULL }; | ||||
| static const char *const oggflac_suffixes[] = { "ogg", "oga", nullptr }; | ||||
| static const char *const oggflac_mime_types[] = { | ||||
| 	"application/ogg", | ||||
| 	"application/x-ogg", | ||||
| 	"audio/ogg", | ||||
| 	"audio/x-flac+ogg", | ||||
| 	"audio/x-ogg", | ||||
| 	NULL | ||||
| 	nullptr | ||||
| }; | ||||
| 
 | ||||
| const struct decoder_plugin oggflac_decoder_plugin = { | ||||
| 	.name = "oggflac", | ||||
| 	.init = oggflac_init, | ||||
| 	.stream_decode = oggflac_decode, | ||||
| 	.scan_file = oggflac_scan_file, | ||||
| 	.suffixes = oggflac_suffixes, | ||||
| 	.mime_types = oggflac_mime_types | ||||
| 	"oggflac", | ||||
| 	oggflac_init, | ||||
| 	nullptr, | ||||
| 	oggflac_decode, | ||||
| 	nullptr, | ||||
| 	oggflac_scan_file, | ||||
| 	nullptr, | ||||
| 	nullptr, | ||||
| 	oggflac_suffixes, | ||||
| 	oggflac_mime_types, | ||||
| }; | ||||
| 
 | ||||
| static const char *const flac_suffixes[] = { "flac", NULL }; | ||||
| static const char *const flac_suffixes[] = { "flac", nullptr }; | ||||
| static const char *const flac_mime_types[] = { | ||||
| 	"application/flac", | ||||
| 	"application/x-flac", | ||||
| 	"audio/flac", | ||||
| 	"audio/x-flac", | ||||
| 	NULL | ||||
| 	nullptr | ||||
| }; | ||||
| 
 | ||||
| const struct decoder_plugin flac_decoder_plugin = { | ||||
| 	.name = "flac", | ||||
| 	.stream_decode = flac_decode, | ||||
| 	.scan_file = flac_scan_file, | ||||
| 	.suffixes = flac_suffixes, | ||||
| 	.mime_types = flac_mime_types, | ||||
| 	"flac", | ||||
| 	nullptr, | ||||
| 	nullptr, | ||||
| 	flac_decode, | ||||
| 	nullptr, | ||||
| 	flac_scan_file, | ||||
| 	nullptr, | ||||
| 	nullptr, | ||||
| 	flac_suffixes, | ||||
| 	flac_mime_types, | ||||
| }; | ||||
							
								
								
									
										26
									
								
								src/decoder/FLACDecoderPlugin.h
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										26
									
								
								src/decoder/FLACDecoderPlugin.h
									
									
									
									
									
										Normal file
									
								
							| @@ -0,0 +1,26 @@ | ||||
| /* | ||||
|  * Copyright (C) 2003-2012 The Music Player Daemon Project | ||||
|  * http://www.musicpd.org | ||||
|  * | ||||
|  * This program is free software; you can redistribute it and/or modify | ||||
|  * it under the terms of the GNU General Public License as published by | ||||
|  * the Free Software Foundation; either version 2 of the License, or | ||||
|  * (at your option) any later version. | ||||
|  * | ||||
|  * This program is distributed in the hope that it will be useful, | ||||
|  * but WITHOUT ANY WARRANTY; without even the implied warranty of | ||||
|  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the | ||||
|  * GNU General Public License for more details. | ||||
|  * | ||||
|  * You should have received a copy of the GNU General Public License along | ||||
|  * with this program; if not, write to the Free Software Foundation, Inc., | ||||
|  * 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA. | ||||
|  */ | ||||
|  | ||||
| #ifndef MPD_DECODER_FLAC_H | ||||
| #define MPD_DECODER_FLAC_H | ||||
|  | ||||
| extern const struct decoder_plugin flac_decoder_plugin; | ||||
| extern const struct decoder_plugin oggflac_decoder_plugin; | ||||
|  | ||||
| #endif | ||||
| @@ -1,5 +1,5 @@ | ||||
| /*
 | ||||
|  * Copyright (C) 2003-2011 The Music Player Daemon Project | ||||
|  * Copyright (C) 2003-2012 The Music Player Daemon Project | ||||
|  * http://www.musicpd.org
 | ||||
|  * | ||||
|  * This program is free software; you can redistribute it and/or modify | ||||
| @@ -18,10 +18,14 @@ | ||||
|  */ | ||||
| 
 | ||||
| #include "config.h" | ||||
| #include "flac_metadata.h" | ||||
| #include "FLACMetaData.hxx" | ||||
| 
 | ||||
| extern "C" { | ||||
| #include "XiphTags.h" | ||||
| #include "replay_gain_info.h" | ||||
| #include "tag.h" | ||||
| } | ||||
| 
 | ||||
| #include "tag_handler.h" | ||||
| #include "tag_table.h" | ||||
| 
 | ||||
| @@ -92,7 +96,7 @@ flac_find_string_comment(const FLAC__StreamMetadata *block, | ||||
| 	int len; | ||||
| 	const unsigned char *p; | ||||
| 
 | ||||
| 	*str = NULL; | ||||
| 	*str = nullptr; | ||||
| 	offset = FLAC__metadata_object_vorbiscomment_find_entry_from(block, 0, | ||||
| 								     cmnt); | ||||
| 	if (offset < 0) | ||||
| @@ -137,9 +141,9 @@ flac_comment_value(const FLAC__StreamMetadata_VorbisComment_Entry *entry, | ||||
| 
 | ||||
| 	if (entry->length <= name_length || | ||||
| 	    g_ascii_strncasecmp(comment, name, name_length) != 0) | ||||
| 		return NULL; | ||||
| 		return nullptr; | ||||
| 
 | ||||
| 	if (char_tnum != NULL) { | ||||
| 	if (char_tnum != nullptr) { | ||||
| 		char_tnum_length = strlen(char_tnum); | ||||
| 		if (entry->length > name_length + char_tnum_length + 2 && | ||||
| 		    comment[name_length] == '[' && | ||||
| @@ -158,7 +162,7 @@ flac_comment_value(const FLAC__StreamMetadata_VorbisComment_Entry *entry, | ||||
| 		return comment + name_length + 1; | ||||
| 	} | ||||
| 
 | ||||
| 	return NULL; | ||||
| 	return nullptr; | ||||
| } | ||||
| 
 | ||||
| /**
 | ||||
| @@ -175,7 +179,7 @@ flac_copy_comment(const FLAC__StreamMetadata_VorbisComment_Entry *entry, | ||||
| 	size_t value_length; | ||||
| 
 | ||||
| 	value = flac_comment_value(entry, name, char_tnum, &value_length); | ||||
| 	if (value != NULL) { | ||||
| 	if (value != nullptr) { | ||||
| 		char *p = g_strndup(value, value_length); | ||||
| 		tag_handler_invoke_tag(handler, handler_ctx, tag_type, p); | ||||
| 		g_free(p); | ||||
| @@ -190,11 +194,11 @@ flac_scan_comment(const char *char_tnum, | ||||
| 		  const FLAC__StreamMetadata_VorbisComment_Entry *entry, | ||||
| 		  const struct tag_handler *handler, void *handler_ctx) | ||||
| { | ||||
| 	if (handler->pair != NULL) { | ||||
| 	if (handler->pair != nullptr) { | ||||
| 		char *name = g_strdup((const char*)entry->entry); | ||||
| 		char *value = strchr(name, '='); | ||||
| 
 | ||||
| 		if (value != NULL && value > name) { | ||||
| 		if (value != nullptr && value > name) { | ||||
| 			*value++ = 0; | ||||
| 			tag_handler_invoke_pair(handler, handler_ctx, | ||||
| 						name, value); | ||||
| @@ -203,14 +207,15 @@ flac_scan_comment(const char *char_tnum, | ||||
| 		g_free(name); | ||||
| 	} | ||||
| 
 | ||||
| 	for (const struct tag_table *i = xiph_tags; i->name != NULL; ++i) | ||||
| 	for (const struct tag_table *i = xiph_tags; i->name != nullptr; ++i) | ||||
| 		if (flac_copy_comment(entry, i->name, i->type, char_tnum, | ||||
| 				      handler, handler_ctx)) | ||||
| 			return; | ||||
| 
 | ||||
| 	for (unsigned i = 0; i < TAG_NUM_OF_ITEM_TYPES; ++i) | ||||
| 		if (flac_copy_comment(entry, | ||||
| 				      tag_item_names[i], i, char_tnum, | ||||
| 				      tag_item_names[i], (enum tag_type)i, | ||||
| 				      char_tnum, | ||||
| 				      handler, handler_ctx)) | ||||
| 			return; | ||||
| } | ||||
| @@ -260,7 +265,7 @@ flac_scan_file2(const char *file, const char *char_tnum, | ||||
| 		const struct tag_handler *handler, void *handler_ctx) | ||||
| { | ||||
| 	FLAC__Metadata_SimpleIterator *it; | ||||
| 	FLAC__StreamMetadata *block = NULL; | ||||
| 	FLAC__StreamMetadata *block = nullptr; | ||||
| 
 | ||||
| 	it = FLAC__metadata_simple_iterator_new(); | ||||
| 	if (!FLAC__metadata_simple_iterator_init(it, file, 1, 0)) { | ||||
| @@ -310,7 +315,7 @@ flac_tag_load(const char *file, const char *char_tnum) | ||||
| 	if (!flac_scan_file2(file, char_tnum, &add_tag_handler, tag) || | ||||
| 	    tag_is_empty(tag)) { | ||||
| 		tag_free(tag); | ||||
| 		tag = NULL; | ||||
| 		tag = nullptr; | ||||
| 	} | ||||
| 
 | ||||
| 	return tag; | ||||
| @@ -1,5 +1,5 @@ | ||||
| /*
 | ||||
|  * Copyright (C) 2003-2011 The Music Player Daemon Project | ||||
|  * Copyright (C) 2003-2012 The Music Player Daemon Project | ||||
|  * http://www.musicpd.org
 | ||||
|  * | ||||
|  * This program is free software; you can redistribute it and/or modify | ||||
| @@ -1,5 +1,5 @@ | ||||
| /*
 | ||||
|  * Copyright (C) 2003-2011 The Music Player Daemon Project | ||||
|  * Copyright (C) 2003-2012 The Music Player Daemon Project | ||||
|  * http://www.musicpd.org
 | ||||
|  * | ||||
|  * This program is free software; you can redistribute it and/or modify | ||||
| @@ -18,7 +18,7 @@ | ||||
|  */ | ||||
| 
 | ||||
| #include "config.h" | ||||
| #include "flac_pcm.h" | ||||
| #include "FLAC_PCM.hxx" | ||||
| 
 | ||||
| #include <assert.h> | ||||
| 
 | ||||
| @@ -1,5 +1,5 @@ | ||||
| /*
 | ||||
|  * Copyright (C) 2003-2011 The Music Player Daemon Project | ||||
|  * Copyright (C) 2003-2012 The Music Player Daemon Project | ||||
|  * http://www.musicpd.org
 | ||||
|  * | ||||
|  * This program is free software; you can redistribute it and/or modify | ||||
| @@ -17,8 +17,8 @@ | ||||
|  * 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA. | ||||
|  */ | ||||
| 
 | ||||
| #ifndef MPD_FLAC_PCM_H | ||||
| #define MPD_FLAC_PCM_H | ||||
| #ifndef MPD_FLAC_PCM_HXX | ||||
| #define MPD_FLAC_PCM_HXX | ||||
| 
 | ||||
| #include "audio_format.h" | ||||
| 
 | ||||
| @@ -26,6 +26,7 @@ | ||||
| #include "decoder/pcm_decoder_plugin.h" | ||||
| #include "decoder/dsdiff_decoder_plugin.h" | ||||
| #include "decoder/dsf_decoder_plugin.h" | ||||
| #include "decoder/FLACDecoderPlugin.h" | ||||
| #include "decoder/OpusDecoderPlugin.h" | ||||
| #include "decoder/AdPlugDecoderPlugin.h" | ||||
|  | ||||
| @@ -36,8 +37,6 @@ | ||||
| extern const struct decoder_plugin mad_decoder_plugin; | ||||
| extern const struct decoder_plugin mpg123_decoder_plugin; | ||||
| extern const struct decoder_plugin vorbis_decoder_plugin; | ||||
| extern const struct decoder_plugin flac_decoder_plugin; | ||||
| extern const struct decoder_plugin oggflac_decoder_plugin; | ||||
| extern const struct decoder_plugin sndfile_decoder_plugin; | ||||
| extern const struct decoder_plugin audiofile_decoder_plugin; | ||||
| extern const struct decoder_plugin mp4ff_decoder_plugin; | ||||
|   | ||||
		Reference in New Issue
	
	Block a user
	 Max Kellermann
					Max Kellermann