[FFmpeg-cvslog] r22491 - in trunk/libavformat: rm.h rmdec.c
aurel
subversion
Sat Mar 13 00:35:59 CET 2010
Author: aurel
Date: Sat Mar 13 00:35:59 2010
New Revision: 22491
Log:
export rm_reorder_sipr_data() for future use by matroska demuxer
Modified:
trunk/libavformat/rm.h
trunk/libavformat/rmdec.c
Modified: trunk/libavformat/rm.h
==============================================================================
--- trunk/libavformat/rm.h Sat Mar 13 00:34:30 2010 (r22490)
+++ trunk/libavformat/rm.h Sat Mar 13 00:35:59 2010 (r22491)
@@ -91,4 +91,11 @@ int ff_rm_parse_packet (AVFormatContext
int ff_rm_retrieve_cache (AVFormatContext *s, ByteIOContext *pb,
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 */
Modified: trunk/libavformat/rmdec.c
==============================================================================
--- trunk/libavformat/rmdec.c Sat Mar 13 00:34:30 2010 (r22490)
+++ trunk/libavformat/rmdec.c Sat Mar 13 00:35:59 2010 (r22491)
@@ -696,16 +696,14 @@ rm_ac3_swap_bytes (AVStream *st, AVPacke
* Perform 4-bit block reordering for SIPR data.
* @todo This can be optimized, e.g. use memcpy() if data blocks are aligned
*/
-static void
-rm_reorder_sipr_data (RMStream *ast)
+void ff_rm_reorder_sipr_data(uint8_t *buf, int sub_packet_h, int framesize)
{
- 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++) {
int j;
int i = bs * sipr_swaps[n][0];
int o = bs * sipr_swaps[n][1];
- uint8_t *buf = ast->pkt.data;
/* swap 4bit-nibbles of block 'i' with 'o' */
for (j = 0; j < bs; j++, i++, o++) {
@@ -766,7 +764,7 @@ ff_rm_parse_packet (AVFormatContext *s,
if (++(ast->sub_packet_cnt) < h)
return -1;
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;
rm->audio_stream_num = st->index;
More information about the ffmpeg-cvslog
mailing list