mirror of
https://github.com/FFmpeg/FFmpeg.git
synced 2024-11-26 19:01:44 +02:00
Merge commit '5fdaf312c5541b77b6364db8b49d6abb416a25c0'
* commit '5fdaf312c5541b77b6364db8b49d6abb416a25c0': flac: make avpriv_flac_parse_block_header() inline Merged-by: Michael Niedermayer <michaelni@gmx.at>
This commit is contained in:
commit
40beec6a43
@ -236,14 +236,10 @@ void avpriv_flac_parse_streaminfo(AVCodecContext *avctx, struct FLACStreaminfo *
|
||||
skip_bits_long(&gb, 64); /* md5 sum */
|
||||
}
|
||||
|
||||
#if LIBAVCODEC_VERSION_MAJOR < 56
|
||||
void avpriv_flac_parse_block_header(const uint8_t *block_header,
|
||||
int *last, int *type, int *size)
|
||||
{
|
||||
int tmp = bytestream_get_byte(&block_header);
|
||||
if (last)
|
||||
*last = tmp & 0x80;
|
||||
if (type)
|
||||
*type = tmp & 0x7F;
|
||||
if (size)
|
||||
*size = bytestream_get_be24(&block_header);
|
||||
flac_parse_block_header(block_header, last, type, size);
|
||||
}
|
||||
#endif
|
||||
|
@ -28,6 +28,7 @@
|
||||
#define AVCODEC_FLAC_H
|
||||
|
||||
#include "avcodec.h"
|
||||
#include "bytestream.h"
|
||||
#include "get_bits.h"
|
||||
|
||||
#define FLAC_STREAMINFO_SIZE 34
|
||||
@ -109,15 +110,10 @@ int avpriv_flac_is_extradata_valid(AVCodecContext *avctx,
|
||||
enum FLACExtradataFormat *format,
|
||||
uint8_t **streaminfo_start);
|
||||
|
||||
/**
|
||||
* Parse the metadata block parameters from the header.
|
||||
* @param[in] block_header header data, at least 4 bytes
|
||||
* @param[out] last indicator for last metadata block
|
||||
* @param[out] type metadata block type
|
||||
* @param[out] size metadata block size
|
||||
*/
|
||||
#if LIBAVCODEC_VERSION_MAJOR < 56
|
||||
void avpriv_flac_parse_block_header(const uint8_t *block_header,
|
||||
int *last, int *type, int *size);
|
||||
#endif
|
||||
|
||||
/**
|
||||
* Calculate an estimate for the maximum frame size based on verbatim mode.
|
||||
@ -140,4 +136,23 @@ int ff_flac_decode_frame_header(AVCodecContext *avctx, GetBitContext *gb,
|
||||
|
||||
void ff_flac_set_channel_layout(AVCodecContext *avctx);
|
||||
|
||||
/**
|
||||
* Parse the metadata block parameters from the header.
|
||||
* @param[in] block_header header data, at least 4 bytes
|
||||
* @param[out] last indicator for last metadata block
|
||||
* @param[out] type metadata block type
|
||||
* @param[out] size metadata block size
|
||||
*/
|
||||
static av_always_inline void flac_parse_block_header(const uint8_t *block_header,
|
||||
int *last, int *type, int *size)
|
||||
{
|
||||
int tmp = bytestream_get_byte(&block_header);
|
||||
if (last)
|
||||
*last = tmp & 0x80;
|
||||
if (type)
|
||||
*type = tmp & 0x7F;
|
||||
if (size)
|
||||
*size = bytestream_get_be24(&block_header);
|
||||
}
|
||||
|
||||
#endif /* AVCODEC_FLAC_H */
|
||||
|
@ -162,7 +162,7 @@ static int parse_streaminfo(FLACContext *s, const uint8_t *buf, int buf_size)
|
||||
/* need more data */
|
||||
return 0;
|
||||
}
|
||||
avpriv_flac_parse_block_header(&buf[4], NULL, &metadata_type, &metadata_size);
|
||||
flac_parse_block_header(&buf[4], NULL, &metadata_type, &metadata_size);
|
||||
if (metadata_type != FLAC_METADATA_TYPE_STREAMINFO ||
|
||||
metadata_size != FLAC_STREAMINFO_SIZE) {
|
||||
return AVERROR_INVALIDDATA;
|
||||
@ -193,7 +193,7 @@ static int get_metadata_size(const uint8_t *buf, int buf_size)
|
||||
do {
|
||||
if (buf_end - buf < 4)
|
||||
return 0;
|
||||
avpriv_flac_parse_block_header(buf, &metadata_last, NULL, &metadata_size);
|
||||
flac_parse_block_header(buf, &metadata_last, NULL, &metadata_size);
|
||||
buf += 4;
|
||||
if (buf_end - buf < metadata_size) {
|
||||
/* need more data in order to read the complete header */
|
||||
|
@ -51,7 +51,7 @@ static int flac_read_header(AVFormatContext *s)
|
||||
/* process metadata blocks */
|
||||
while (!url_feof(s->pb) && !metadata_last) {
|
||||
avio_read(s->pb, header, 4);
|
||||
avpriv_flac_parse_block_header(header, &metadata_last, &metadata_type,
|
||||
flac_parse_block_header(header, &metadata_last, &metadata_type,
|
||||
&metadata_size);
|
||||
switch (metadata_type) {
|
||||
/* allocate and read metadata block for supported types */
|
||||
|
Loading…
Reference in New Issue
Block a user