X-Git-Url: https://git.sesse.net/?a=blobdiff_plain;f=modules%2Fcodec%2Fdirac.c;h=ef0ad318aa2215d13f9fe21f2c7ac28e1a2eb00d;hb=19a50f5df315c583d84712be7c724ba3ab587c1c;hp=f24dd18b0e3ee9a6a1fe5f87d8f9ca53e9135a25;hpb=78d87996ccb92d1dc91c9987685f976ed3be08a6;p=vlc diff --git a/modules/codec/dirac.c b/modules/codec/dirac.c index f24dd18b0e..ef0ad318aa 100644 --- a/modules/codec/dirac.c +++ b/modules/codec/dirac.c @@ -103,13 +103,13 @@ static const char *const enc_chromafmt_list_text[] = #define ENC_CODINGMODE "coding-mode" #define ENC_CODINGMODE_TEXT N_("Picture coding mode") #define ENC_CODINGMODE_LONGTEXT N_("Field coding is where interlaced fields are coded" \ - " seperately as opposed to a pseudo-progressive frame") + " separately as opposed to a pseudo-progressive frame") static const char *const enc_codingmode_list[] = { "auto", "progressive", "field" }; static const char *const enc_codingmode_list_text[] = { N_("auto - let encoder decide based upon input (Best)"), N_("force coding frame as single picture"), - N_("force coding frame as seperate interlaced fields"), + N_("force coding frame as separate interlaced fields"), }; #define ENC_MCBLK_WIDTH "mc-blk-width" @@ -204,6 +204,7 @@ vlc_module_begin() set_category( CAT_INPUT ) set_subcategory( SUBCAT_INPUT_VCODEC ) set_description( N_("Dirac video encoder using dirac-research library") ) + set_shortname( "Dirac" ) set_capability( "encoder", 100 ) set_callbacks( OpenEncoder, CloseEncoder ) @@ -248,12 +249,10 @@ vlc_module_begin() add_integer( ENC_CFG_PREFIX ENC_MCBLK_WIDTH, -1, NULL, ENC_MCBLK_WIDTH_TEXT, ENC_MCBLK_WIDTH_LONGTEXT, false ) - add_deprecated_alias( ENC_CFG_PREFIX ENC_MCBLK_XBLEN ); change_integer_range(-1, INT_MAX); add_integer( ENC_CFG_PREFIX ENC_MCBLK_HEIGHT, -1, NULL, ENC_MCBLK_HEIGHT, ENC_MCBLK_HEIGHT_LONGTEXT, false ) - add_deprecated_alias( ENC_CFG_PREFIX ENC_MCBLK_YBLEN ); change_integer_range(-1, INT_MAX); add_integer( ENC_CFG_PREFIX ENC_MCBLK_OVERLAP, -1, NULL, @@ -506,9 +505,8 @@ static int OpenEncoder( vlc_object_t *p_this ) p_sys->ctx.src_params.frame_rate.denominator = p_enc->fmt_in.video.i_frame_rate_base; unsigned u_asr_num, u_asr_den; vlc_ureduce( &u_asr_num, &u_asr_den, - p_enc->fmt_in.video.i_height * p_enc->fmt_in.video.i_aspect, - p_enc->fmt_in.video.i_width * VOUT_ASPECT_FACTOR, - 0 ); + p_enc->fmt_in.video.i_sar_num, + p_enc->fmt_in.video.i_sar_den, 0 ); p_sys->ctx.src_params.pix_asr.numerator = u_asr_num; p_sys->ctx.src_params.pix_asr.denominator = u_asr_den; @@ -783,6 +781,7 @@ static block_t *Encode( encoder_t *p_enc, picture_t *p_pic ) int i_plane, i_line, i_width, i_src_stride; uint8_t *p_dst; + if( !p_pic ) return NULL; /* we only know if the sequence is interlaced when the first * picture arrives, so final setup is done here */ /* XXX todo, detect change of interlace */ @@ -800,7 +799,6 @@ static block_t *Encode( encoder_t *p_enc, picture_t *p_pic ) if( !p_sys->p_dirac ) { msg_Err( p_enc, "Failed to initialize dirac encoder" ); - p_enc->b_error = 1; return NULL; } date_Init( &date, p_enc->fmt_in.video.i_frame_rate, p_enc->fmt_in.video.i_frame_rate_base ); @@ -859,10 +857,7 @@ static block_t *Encode( encoder_t *p_enc, picture_t *p_pic ) * coded order */ p_block = block_New( p_enc, 1 ); if( !p_block ) - { - p_enc->b_error = 1; return NULL; - } p_block->i_dts = p_pic->date - p_sys->i_pts_offset; block_FifoPut( p_sys->p_dts_fifo, p_block ); p_block = NULL; @@ -877,10 +872,7 @@ static block_t *Encode( encoder_t *p_enc, picture_t *p_pic ) p_block = block_New( p_enc, 1 ); if( !p_block ) - { - p_enc->b_error = 1; return NULL; - } p_block->i_dts = p_pic->date - p_sys->i_pts_offset + p_sys->i_field_time; block_FifoPut( p_sys->p_dts_fifo, p_block ); p_block = NULL; @@ -901,10 +893,7 @@ static block_t *Encode( encoder_t *p_enc, picture_t *p_pic ) /* extract data from encoder temporary buffer. */ p_block = block_New( p_enc, p_sys->p_dirac->enc_buf.size ); if( !p_block ) - { - p_enc->b_error = 1; return NULL; - } memcpy( p_block->p_buffer, p_sys->p_dirac->enc_buf.buffer, p_sys->p_dirac->enc_buf.size ); @@ -933,10 +922,7 @@ static block_t *Encode( encoder_t *p_enc, picture_t *p_pic ) /* XXX, should this be done using the packetizer ? */ p_enc->fmt_out.p_extra = malloc( len + sizeof(eos) ); if( !p_enc->fmt_out.p_extra ) - { - p_enc->b_error = 1; return NULL; - } memcpy( p_enc->fmt_out.p_extra, p_block->p_buffer, len); memcpy( (uint8_t*)p_enc->fmt_out.p_extra + len, eos, sizeof(eos) ); SetDWBE( (uint8_t*)p_enc->fmt_out.p_extra + len + 10, len );