[vlc-devel] [PATCH] mediacodec: detect size changed by comparing visible size

Zhao Zhili quinkblack at foxmail.com
Fri Aug 10 10:47:06 CEST 2018



On 2018年08月10日 15:01, Thomas Guillem wrote:
> Do you have an hevc sample for that ?

I managed to create an mov to show the align issue with x265 
--min-cu-size option:

-c:v libx265  -x265-params preset=ultrafast:min-cu-size=32

https://drive.google.com/file/d/1ufe8wfjtXaH6BfrooQDJU0Te1hDDAArE/view?usp=sharing

But I don't know how to force add sps/pps per GOP for mov (or is it 
possible?)

273450E        Width:                           320 (0x0140)
2734510        Height:                          240 (0x00F0)

2734594            sps_seq_parameter_set_id:    0 (0x0)
2734594            chroma_format_idc:           1 (0x1) - 4:2:0
2734594            pic_width_in_luma_samples:   320 (0x0140)
2734596            pic_height_in_luma_samples:  256 (0x0100)
2734598            conformance_window_flag (2 bytes)
2734598             conformance_window_flag:    Yes
2734599             conf_win_left_offset:       0 (0x0)
2734599             conf_win_right_offset:      0 (0x0)
2734599             conf_win_top_offset:        0 (0x0)
2734599             conf_win_bottom_offset:     8 (0x08)
273459A            bit_depth_luma_minus8:       0 (0x0)
273459A            bit_depth_chroma_minus8:     0 (0x0)
273459A            log2_max_pic_order_cnt_lsb_minus4: 4 (0x4)
273459B            sps_sub_layer_ordering_info_present_flag: Yes
273459B            SubLayer (1 bytes)
273459B             sps_max_dec_pic_buffering_minus1: 5 (0x5)
273459B             sps_max_num_reorder_pics:   2 (0x2)
273459C             sps_max_latency_increase_plus1: 5 (0x5)
273459C            log2_min_luma_coding_block_size_minus3: 2 (0x2)
273459D            log2_diff_max_min_luma_coding_block_size: 1 (0x1)
273459D            log2_min_transform_block_size_minus2: 0 (0x0)
273459D            log2_diff_max_min_transform_block_size: 3 (0x3)

>
> On Thu, Aug 9, 2018, at 04:20, Zhao Zhili wrote:
>> The commit message is incorrect, please see the next patch. And
>> for my bad English grammar please feel free to reword the commit
>> message if the patch itself is correct.
>>
>>
>> On 2018年08月09日 09:52, Zhao Zhili wrote:
>>> Input size may not aligned to the requirement of codec. For H.264 We can
>>> divide the size by macroblock size before comparing, but it doesn't work
>>> with HEVC.
>>> ---
>>>    modules/codec/omxil/mediacodec.c | 14 +++++++-------
>>>    1 file changed, 7 insertions(+), 7 deletions(-)
>>>
>>> diff --git a/modules/codec/omxil/mediacodec.c b/modules/codec/omxil/mediacodec.c
>>> index 9ee2cf6..40bc5d7 100644
>>> --- a/modules/codec/omxil/mediacodec.c
>>> +++ b/modules/codec/omxil/mediacodec.c
>>> @@ -112,7 +112,7 @@ typedef struct
>>>            {
>>>                void *p_surface, *p_jsurface;
>>>                unsigned i_angle;
>>> -            unsigned i_input_width, i_input_height;
>>> +            unsigned i_input_visible_width, i_input_visible_height;
>>>                unsigned int i_stride, i_slice_height;
>>>                int i_pixel_format;
>>>                struct hxxx_helper hh;
>>> @@ -259,10 +259,10 @@ static void HXXXInitSize(decoder_t *p_dec, bool *p_size_changed)
>>>            unsigned i_w, i_h, i_vw, i_vh;
>>>            hxxx_helper_get_current_picture_size(hh, &i_w, &i_h, &i_vw, &i_vh);
>>>    
>>> -        *p_size_changed = (i_w != p_sys->video.i_input_width
>>> -                        || i_h != p_sys->video.i_input_height);
>>> -        p_sys->video.i_input_width = i_w;
>>> -        p_sys->video.i_input_height = i_h;
>>> +        *p_size_changed = (i_vw != p_sys->video.i_input_visible_width
>>> +                        || i_vh != p_sys->video.i_input_visible_height);
>>> +        p_sys->video.i_input_visible_width = i_vw;
>>> +        p_sys->video.i_input_visible_height = i_vh;
>>>            /* fmt_out video size will be updated by mediacodec output callback */
>>>        }
>>>    }
>>> @@ -731,9 +731,9 @@ static int OpenDecoder(vlc_object_t *p_this, pf_MediaCodecApi_init pf_init)
>>>                    p_dec->fmt_out.video.i_sar_den = 1;
>>>                }
>>>    
>>> -            p_sys->video.i_input_width =
>>> +            p_sys->video.i_input_visible_width = p_dec->fmt_in.video.i_visible_width;
>>> +            p_sys->video.i_input_visible_height = p_dec->fmt_in.video.i_visible_height;
>>>                p_dec->fmt_out.video.i_visible_width = p_dec->fmt_out.video.i_width;
>>> -            p_sys->video.i_input_height =
>>>                p_dec->fmt_out.video.i_visible_height = p_dec->fmt_out.video.i_height;
>>>    
>>>                if (UpdateVout(p_dec) != VLC_SUCCESS)
>>
>>
>> _______________________________________________
>> vlc-devel mailing list
>> To unsubscribe or modify your subscription options:
>> https://mailman.videolan.org/listinfo/vlc-devel
> _______________________________________________
> vlc-devel mailing list
> To unsubscribe or modify your subscription options:
> https://mailman.videolan.org/listinfo/vlc-devel



More information about the vlc-devel mailing list