[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