Merge commit '50a1c66cf6ab7eb683daaa9e2da3869fa3a54609'

* commit '50a1c66cf6ab7eb683daaa9e2da3869fa3a54609':
  ac3_parser: add a public function for parsing the data required by the demuxer

avpriv_ac3_parse_header() is left in place but without the
GetBitContext parameter, as the mov muxer requires a lot more fields
than just bitstream_id and frame_size from the AC3HeaderInfo struct.

Merged-by: James Almer <jamrial@gmail.com>
This commit is contained in:
James Almer
2017-10-27 13:52:19 -03:00
9 changed files with 149 additions and 54 deletions

View File

@@ -23,20 +23,14 @@
#ifndef AVCODEC_AC3_PARSER_H
#define AVCODEC_AC3_PARSER_H
#include "ac3.h"
#include "get_bits.h"
#include <stddef.h>
#include <stdint.h>
/**
* Parse AC-3 frame header.
* Parse the header up to the lfeon element, which is the first 52 or 54 bits
* depending on the audio coding mode.
* @param[in] gbc BitContext containing the first 54 bits of the frame.
* @param[out] hdr Pointer to Pointer to struct where header info is written.
* will be allocated if NULL
* @return Returns 0 on success, -1 if there is a sync word mismatch,
* -2 if the bsid (version) element is invalid, -3 if the fscod (sample rate)
* element is invalid, or -4 if the frmsizecod (bit rate) element is invalid.
* Extract the bitstream ID and the frame size from AC-3 data.
*/
int avpriv_ac3_parse_header(GetBitContext *gbc, AC3HeaderInfo **hdr);
int av_ac3_parse_header(const uint8_t *buf, size_t size,
uint8_t *bitstream_id, uint16_t *frame_size);
#endif /* AVCODEC_AC3_PARSER_H */