vlc | branch: master | Francois Cartegnie <[email protected]> | Sat Oct 29 
16:50:40 2016 +0200| [23d9a7c4b54e104bfb1cd77809d79dba2c7c7389] | committer: 
Francois Cartegnie

codec: cc: fix replay tv multiple packets per private data

according to samples, there always can be more than 8 bytes

> http://git.videolan.org/gitweb.cgi/vlc.git/?a=commit;h=23d9a7c4b54e104bfb1cd77809d79dba2c7c7389
---

 modules/codec/cc.h | 13 +++++--------
 1 file changed, 5 insertions(+), 8 deletions(-)

diff --git a/modules/codec/cc.h b/modules/codec/cc.h
index 8605102..8416821 100644
--- a/modules/codec/cc.h
+++ b/modules/codec/cc.h
@@ -253,15 +253,12 @@ static inline void cc_Extract( cc_data_t *c, bool 
b_top_field_first, const uint8
     else if( i_payload_type == CC_PAYLOAD_REPLAYTV )
     {
         const uint8_t *cc = &p_src[0];
-        int i;
-        if( c->i_data + 2*3 > CC_MAX_DATA_SIZE )
-            return;
-
-        for( i = 0; i < 2; i++, cc += 4 )
+        for( int i_cc_count = i_src >> 2; i_cc_count > 0;
+             i_cc_count--, cc += 4 )
         {
-            const int i_field = i == 0 ? 1 : 0;
-
-            cc_AppendData( c, CC_PKT_BYTE0(i_field), &cc[2] );
+            if( c->i_data + 3 > CC_MAX_DATA_SIZE )
+                return;
+            cc_AppendData( c, CC_PKT_BYTE0(i_cc_count % 2), &cc[2] );
         }
         c->b_reorder = false;
     }

_______________________________________________
vlc-commits mailing list
[email protected]
https://mailman.videolan.org/listinfo/vlc-commits

Reply via email to