1919#include <stddef.h>
2020#include <stdint.h>
2121
22+ #include "libavutil/intreadwrite.h"
2223#include "libavutil/mem.h"
2324#include "atsc_a53.h"
24- #include "get_bits.h"
2525
2626int ff_alloc_a53_sei (const AVFrame * frame , size_t prefix_len ,
2727 void * * data , size_t * sei_size )
@@ -69,33 +69,25 @@ int ff_alloc_a53_sei(const AVFrame *frame, size_t prefix_len,
6969int ff_parse_a53_cc (AVBufferRef * * pbuf , const uint8_t * data , int size )
7070{
7171 AVBufferRef * buf = * pbuf ;
72- GetBitContext gb ;
7372 size_t new_size , old_size = buf ? buf -> size : 0 ;
7473 int ret , cc_count ;
7574
7675 if (size < 3 )
7776 return AVERROR_INVALIDDATA ;
7877
79- ret = init_get_bits8 (& gb , data , size );
80- if (ret < 0 )
81- return ret ;
82-
83- if (get_bits (& gb , 8 ) != 0x3 ) // user_data_type_code
78+ if (data [0 ] != 0x3 ) // user_data_type_code
8479 return 0 ;
8580
86- skip_bits (& gb , 1 ); // reserved
87- if (!get_bits (& gb , 1 )) // process_cc_data_flag
81+ if (!(data [1 ] & 0x40 )) // process_cc_data_flag
8882 return 0 ;
8983
90- skip_bits (& gb , 1 ); // zero bit
91- cc_count = get_bits (& gb , 5 );
84+ cc_count = data [1 ] & 0x1F ;
9285 if (!cc_count )
9386 return 0 ;
9487
95- skip_bits (& gb , 8 ); // reserved
96-
88+ // content of data[2] is reserved
9789 /* 3 bytes per CC plus one byte marker_bits at the end */
98- if (cc_count * 3 >= ( get_bits_left ( & gb ) >> 3 ) )
90+ if (cc_count * 3 >= size - 3 )
9991 return AVERROR_INVALIDDATA ;
10092
10193 new_size = (old_size + cc_count * 3 );
@@ -110,11 +102,7 @@ int ff_parse_a53_cc(AVBufferRef **pbuf, const uint8_t *data, int size)
110102
111103 buf = * pbuf ;
112104 /* Use of av_buffer_realloc assumes buffer is writeable */
113- for (int i = 0 ; i < cc_count ; i ++ ) {
114- buf -> data [old_size ++ ] = get_bits (& gb , 8 );
115- buf -> data [old_size ++ ] = get_bits (& gb , 8 );
116- buf -> data [old_size ++ ] = get_bits (& gb , 8 );
117- }
105+ memcpy (buf -> data + old_size , data + 3 , cc_count * 3 );
118106
119107 return cc_count ;
120108}
0 commit comments