decoder/flac: emulate FLAC__stream_decoder_init_stream()
Remove the wrapper flac_init().
This commit is contained in:
		| @@ -67,6 +67,38 @@ typedef unsigned flac_read_status_size_t; | |||||||
| #define FLAC__STREAM_DECODER_LENGTH_STATUS_ERROR FLAC__SEEKABLE_STREAM_DECODER_LENGTH_STATUS_ERROR | #define FLAC__STREAM_DECODER_LENGTH_STATUS_ERROR FLAC__SEEKABLE_STREAM_DECODER_LENGTH_STATUS_ERROR | ||||||
| #define FLAC__STREAM_DECODER_LENGTH_STATUS_UNSUPPORTED FLAC__SEEKABLE_STREAM_DECODER_LENGTH_STATUS_ERROR | #define FLAC__STREAM_DECODER_LENGTH_STATUS_UNSUPPORTED FLAC__SEEKABLE_STREAM_DECODER_LENGTH_STATUS_ERROR | ||||||
|  |  | ||||||
|  | typedef enum { | ||||||
|  | 	FLAC__STREAM_DECODER_INIT_STATUS_OK, | ||||||
|  | 	FLAC__STREAM_DECODER_INIT_STATUS_ERROR, | ||||||
|  | } FLAC__StreamDecoderInitStatus; | ||||||
|  |  | ||||||
|  | static inline FLAC__StreamDecoderInitStatus | ||||||
|  | FLAC__stream_decoder_init_stream(FLAC__SeekableStreamDecoder *decoder, | ||||||
|  | 				 FLAC__SeekableStreamDecoderReadCallback read_cb, | ||||||
|  | 				 FLAC__SeekableStreamDecoderSeekCallback seek_cb, | ||||||
|  | 				 FLAC__SeekableStreamDecoderTellCallback tell_cb, | ||||||
|  | 				 FLAC__SeekableStreamDecoderLengthCallback length_cb, | ||||||
|  | 				 FLAC__SeekableStreamDecoderEofCallback eof_cb, | ||||||
|  | 				 FLAC__SeekableStreamDecoderWriteCallback write_cb, | ||||||
|  | 				 FLAC__SeekableStreamDecoderMetadataCallback metadata_cb, | ||||||
|  | 				 FLAC__SeekableStreamDecoderErrorCallback error_cb, | ||||||
|  | 				 void *data) | ||||||
|  | { | ||||||
|  | 	return FLAC__seekable_stream_decoder_set_read_callback(decoder, read_cb) && | ||||||
|  | 		FLAC__seekable_stream_decoder_set_seek_callback(decoder, seek_cb) && | ||||||
|  | 		FLAC__seekable_stream_decoder_set_tell_callback(decoder, tell_cb) && | ||||||
|  | 		FLAC__seekable_stream_decoder_set_length_callback(decoder, length_cb) && | ||||||
|  | 		FLAC__seekable_stream_decoder_set_eof_callback(decoder, eof_cb) && | ||||||
|  | 		FLAC__seekable_stream_decoder_set_write_callback(decoder, write_cb) && | ||||||
|  | 		FLAC__seekable_stream_decoder_set_metadata_callback(decoder, metadata_cb) && | ||||||
|  | 		FLAC__seekable_stream_decoder_set_metadata_respond(decoder, FLAC__METADATA_TYPE_VORBIS_COMMENT) && | ||||||
|  | 		FLAC__seekable_stream_decoder_set_error_callback(decoder, error_cb) && | ||||||
|  | 		FLAC__seekable_stream_decoder_set_client_data(decoder, data) && | ||||||
|  | 		FLAC__seekable_stream_decoder_init(decoder) == FLAC__SEEKABLE_STREAM_DECODER_OK | ||||||
|  | 		? FLAC__STREAM_DECODER_INIT_STATUS_OK | ||||||
|  | 		: FLAC__STREAM_DECODER_INIT_STATUS_ERROR; | ||||||
|  | } | ||||||
|  |  | ||||||
| #else /* FLAC_API_VERSION_CURRENT > 7 */ | #else /* FLAC_API_VERSION_CURRENT > 7 */ | ||||||
|  |  | ||||||
| #  include <FLAC/stream_decoder.h> | #  include <FLAC/stream_decoder.h> | ||||||
|   | |||||||
| @@ -150,31 +150,6 @@ static void flacPrintErroredState(FLAC__SeekableStreamDecoderState state) | |||||||
|  |  | ||||||
| 	g_warning("%s\n", str); | 	g_warning("%s\n", str); | ||||||
| } | } | ||||||
|  |  | ||||||
| static bool |  | ||||||
| flac_init(FLAC__SeekableStreamDecoder *dec, |  | ||||||
| 	  FLAC__SeekableStreamDecoderReadCallback read_cb, |  | ||||||
| 	  FLAC__SeekableStreamDecoderSeekCallback seek_cb, |  | ||||||
| 	  FLAC__SeekableStreamDecoderTellCallback tell_cb, |  | ||||||
| 	  FLAC__SeekableStreamDecoderLengthCallback length_cb, |  | ||||||
| 	  FLAC__SeekableStreamDecoderEofCallback eof_cb, |  | ||||||
| 	  FLAC__SeekableStreamDecoderWriteCallback write_cb, |  | ||||||
| 	  FLAC__SeekableStreamDecoderMetadataCallback metadata_cb, |  | ||||||
| 	  FLAC__SeekableStreamDecoderErrorCallback error_cb, |  | ||||||
| 	  void *data) |  | ||||||
| { |  | ||||||
| 	return FLAC__seekable_stream_decoder_set_read_callback(dec, read_cb) && |  | ||||||
| 		FLAC__seekable_stream_decoder_set_seek_callback(dec, seek_cb) && |  | ||||||
| 		FLAC__seekable_stream_decoder_set_tell_callback(dec, tell_cb) && |  | ||||||
| 		FLAC__seekable_stream_decoder_set_length_callback(dec, length_cb) && |  | ||||||
| 		FLAC__seekable_stream_decoder_set_eof_callback(dec, eof_cb) && |  | ||||||
| 		FLAC__seekable_stream_decoder_set_write_callback(dec, write_cb) && |  | ||||||
| 		FLAC__seekable_stream_decoder_set_metadata_callback(dec, metadata_cb) && |  | ||||||
| 		FLAC__seekable_stream_decoder_set_metadata_respond(dec, FLAC__METADATA_TYPE_VORBIS_COMMENT) && |  | ||||||
| 		FLAC__seekable_stream_decoder_set_error_callback(dec, error_cb) && |  | ||||||
| 		FLAC__seekable_stream_decoder_set_client_data(dec, data) && |  | ||||||
| 		FLAC__seekable_stream_decoder_init(dec) == FLAC__SEEKABLE_STREAM_DECODER_OK; |  | ||||||
| } |  | ||||||
| #else /* FLAC_API_VERSION_CURRENT >= 7 */ | #else /* FLAC_API_VERSION_CURRENT >= 7 */ | ||||||
| static void flacPrintErroredState(FLAC__StreamDecoderState state) | static void flacPrintErroredState(FLAC__StreamDecoderState state) | ||||||
| { | { | ||||||
| @@ -489,11 +464,18 @@ flac_decode_internal(struct decoder * decoder, | |||||||
| 		goto fail; | 		goto fail; | ||||||
| #endif | #endif | ||||||
| 	} else { | 	} else { | ||||||
| 		if (!flac_init(flac_dec, flac_read_cb, | 		FLAC__StreamDecoderInitStatus status = | ||||||
| 			       flac_seek_cb, flac_tell_cb, | 			FLAC__stream_decoder_init_stream(flac_dec, | ||||||
| 			       flac_length_cb, flac_eof_cb, | 							 flac_read_cb, | ||||||
| 			       flac_write_cb, flacMetadata, | 							 flac_seek_cb, | ||||||
| 			       flac_error_cb, (void *)&data)) { | 							 flac_tell_cb, | ||||||
|  | 							 flac_length_cb, | ||||||
|  | 							 flac_eof_cb, | ||||||
|  | 							 flac_write_cb, | ||||||
|  | 							 flacMetadata, | ||||||
|  | 							 flac_error_cb, | ||||||
|  | 							 (void *)&data); | ||||||
|  | 		if (status != FLAC__STREAM_DECODER_INIT_STATUS_OK) { | ||||||
| 			err = "doing init()"; | 			err = "doing init()"; | ||||||
| 			goto fail; | 			goto fail; | ||||||
| 		} | 		} | ||||||
|   | |||||||
		Reference in New Issue
	
	Block a user
	 Max Kellermann
					Max Kellermann