mirror of
https://github.com/FFmpeg/FFmpeg.git
synced 2025-03-17 20:17:55 +02:00
export rm_reorder_sipr_data() for future use by matroska demuxer
Originally committed as revision 22491 to svn://svn.ffmpeg.org/ffmpeg/trunk
This commit is contained in:
parent
adae9fa65e
commit
1ab0406db1
@ -91,4 +91,11 @@ int ff_rm_parse_packet (AVFormatContext *s, ByteIOContext *pb,
|
|||||||
int ff_rm_retrieve_cache (AVFormatContext *s, ByteIOContext *pb,
|
int ff_rm_retrieve_cache (AVFormatContext *s, ByteIOContext *pb,
|
||||||
AVStream *st, RMStream *rst, AVPacket *pkt);
|
AVStream *st, RMStream *rst, AVPacket *pkt);
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Perform 4-bit block reordering for SIPR data.
|
||||||
|
*
|
||||||
|
* @param buf SIPR data
|
||||||
|
*/
|
||||||
|
void ff_rm_reorder_sipr_data(uint8_t *buf, int sub_packet_h, int framesize);
|
||||||
|
|
||||||
#endif /* AVFORMAT_RM_H */
|
#endif /* AVFORMAT_RM_H */
|
||||||
|
@ -696,16 +696,14 @@ rm_ac3_swap_bytes (AVStream *st, AVPacket *pkt)
|
|||||||
* Perform 4-bit block reordering for SIPR data.
|
* Perform 4-bit block reordering for SIPR data.
|
||||||
* @todo This can be optimized, e.g. use memcpy() if data blocks are aligned
|
* @todo This can be optimized, e.g. use memcpy() if data blocks are aligned
|
||||||
*/
|
*/
|
||||||
static void
|
void ff_rm_reorder_sipr_data(uint8_t *buf, int sub_packet_h, int framesize)
|
||||||
rm_reorder_sipr_data (RMStream *ast)
|
|
||||||
{
|
{
|
||||||
int n, bs = ast->sub_packet_h * ast->audio_framesize * 2 / 96; // nibbles per subpacket
|
int n, bs = sub_packet_h * framesize * 2 / 96; // nibbles per subpacket
|
||||||
|
|
||||||
for (n = 0; n < 38; n++) {
|
for (n = 0; n < 38; n++) {
|
||||||
int j;
|
int j;
|
||||||
int i = bs * sipr_swaps[n][0];
|
int i = bs * sipr_swaps[n][0];
|
||||||
int o = bs * sipr_swaps[n][1];
|
int o = bs * sipr_swaps[n][1];
|
||||||
uint8_t *buf = ast->pkt.data;
|
|
||||||
|
|
||||||
/* swap 4bit-nibbles of block 'i' with 'o' */
|
/* swap 4bit-nibbles of block 'i' with 'o' */
|
||||||
for (j = 0; j < bs; j++, i++, o++) {
|
for (j = 0; j < bs; j++, i++, o++) {
|
||||||
@ -766,7 +764,7 @@ ff_rm_parse_packet (AVFormatContext *s, ByteIOContext *pb,
|
|||||||
if (++(ast->sub_packet_cnt) < h)
|
if (++(ast->sub_packet_cnt) < h)
|
||||||
return -1;
|
return -1;
|
||||||
if (st->codec->codec_id == CODEC_ID_SIPR)
|
if (st->codec->codec_id == CODEC_ID_SIPR)
|
||||||
rm_reorder_sipr_data(ast);
|
ff_rm_reorder_sipr_data(ast->pkt.data, h, w);
|
||||||
|
|
||||||
ast->sub_packet_cnt = 0;
|
ast->sub_packet_cnt = 0;
|
||||||
rm->audio_stream_num = st->index;
|
rm->audio_stream_num = st->index;
|
||||||
|
Loading…
x
Reference in New Issue
Block a user