MCPcopy Create free account
hub / github.com/FFmpeg/FFmpeg / avpriv_dca_convert_bitstream

Function avpriv_dca_convert_bitstream

libavcodec/dca.c:49–84  ·  view source on GitHub ↗

Source from the content-addressed store, hash-verified

47};
48
49int avpriv_dca_convert_bitstream(const uint8_t *src, int src_size, uint8_t *dst,
50 int max_size)
51{
52 uint32_t mrk;
53 int i, tmp;
54 PutBitContext pb;
55
56 if ((unsigned) src_size > (unsigned) max_size)
57 src_size = max_size;
58
59 mrk = AV_RB32(src);
60 switch (mrk) {
61 case DCA_SYNCWORD_CORE_BE:
62 case DCA_SYNCWORD_SUBSTREAM:
63 memcpy(dst, src, src_size);
64 return src_size;
65 case DCA_SYNCWORD_CORE_LE:
66 for (i = 0; i < (src_size + 1) >> 1; i++) {
67 AV_WB16(dst, AV_RL16(src));
68 src += 2;
69 dst += 2;
70 }
71 return src_size;
72 case DCA_SYNCWORD_CORE_14B_BE:
73 case DCA_SYNCWORD_CORE_14B_LE:
74 init_put_bits(&pb, dst, max_size);
75 for (i = 0; i < (src_size + 1) >> 1; i++, src += 2) {
76 tmp = ((mrk == DCA_SYNCWORD_CORE_14B_BE) ? AV_RB16(src) : AV_RL16(src)) & 0x3FFF;
77 put_bits(&pb, 14, tmp);
78 }
79 flush_put_bits(&pb);
80 return put_bytes_output(&pb);
81 default:
82 return AVERROR_INVALIDDATA;
83 }
84}
85
86int ff_dca_parse_core_frame_header(DCACoreFrameHeader *h, GetBitContext *gb)
87{

Callers 3

dts_probeFunction · 0.85
dcadec_decode_frameFunction · 0.85
dca_parse_paramsFunction · 0.85

Calls 4

init_put_bitsFunction · 0.85
flush_put_bitsFunction · 0.85
put_bytes_outputFunction · 0.85
put_bitsFunction · 0.70

Tested by

no test coverage detected