@ -28,7 +28,7 @@
# include "mpegvideo.h"
# include "mpegvideo.h"
# include "put_bits.h"
# include "put_bits.h"
void ff_rv10_encode_picture_header ( MpegEncContext * s , int picture_number )
int ff_rv10_encode_picture_header ( MpegEncContext * s , int picture_number )
{
{
int full_frame = 0 ;
int full_frame = 0 ;
@ -48,12 +48,18 @@ void ff_rv10_encode_picture_header(MpegEncContext *s, int picture_number)
/* if multiple packets per frame are sent, the position at which
/* if multiple packets per frame are sent, the position at which
to display the macroblocks is coded here */
to display the macroblocks is coded here */
if ( ! full_frame ) {
if ( ! full_frame ) {
if ( s - > mb_width * s - > mb_height > = ( 1U < < 12 ) ) {
avpriv_report_missing_feature ( s - > avctx , " Encoding frames with %d (>= 4096) macroblocks " ,
s - > mb_width * s - > mb_height ) ;
return AVERROR ( ENOSYS ) ;
}
put_bits ( & s - > pb , 6 , 0 ) ; /* mb_x */
put_bits ( & s - > pb , 6 , 0 ) ; /* mb_x */
put_bits ( & s - > pb , 6 , 0 ) ; /* mb_y */
put_bits ( & s - > pb , 6 , 0 ) ; /* mb_y */
put_bits ( & s - > pb , 12 , s - > mb_width * s - > mb_height ) ;
put_bits ( & s - > pb , 12 , s - > mb_width * s - > mb_height ) ;
}
}
put_bits ( & s - > pb , 3 , 0 ) ; /* ignored */
put_bits ( & s - > pb , 3 , 0 ) ; /* ignored */
return 0 ;
}
}
FF_MPV_GENERIC_CLASS ( rv10 )
FF_MPV_GENERIC_CLASS ( rv10 )