[Libav-user] HEVC 2/3 of the frame is green

Michael Wood mornwood23 at gmail.com
Sat Mar 25 12:09:24 EET 2023


On Fri, Mar 24, 2023 at 1:40 PM Strahinja Radman <dr.strashni at gmail.com>
wrote:

>
>
> On 24. 3. 2023., at 10:59, Michael Wood <mornwood23 at gmail.com> wrote:
>
>
>
> On Fri, Mar 24, 2023 at 10:28 AM Strahinja Radman <dr.strashni at gmail.com>
> wrote:
>
>>
>>
>> On 23. 3. 2023., at 20:19, Michael Wood <mornwood23 at gmail.com> wrote:
>>
>>
>>
>> On Thu, Mar 23, 2023 at 8:06 PM Strahinja Radman <dr.strashni at gmail.com>
>> wrote:
>>
>>
>> On Thu, 23 Mar 2023 at 20:05, Michael Wood <mornwood23 at gmail.com> wrote:
>>
>>
>> On Thu, Mar 23, 2023 at 6:20 PM Michael Wood <mornwood23 at gmail.com>
>> wrote:
>> Hi,
>>
>> I'm having a weird issue with the decoding of H265 4K stream where 1/3 of
>> the frame is rendered normally and the other 2/3 is in green (
>> https://ibb.co/C8yFygm). This only happens if i try to decode 4K stream,
>> for non 4K streams everything works as expected.
>>
>> I'm using live555 library to get stream from RTSP server after which
>> packets are sent to the ffmpeg to be decoded and later rendered
>>
>> DESCRIBE response contains all required VPS,SPS,PPS fields that are
>> passed as extra data to the codec context.
>>
>> This is what is returned from DESCRIBE:
>>
>> v=0
>> o=- 1679598602413481 1679598602413481 IN IP4 192.168.1.212
>> s=Media Presentation
>> e=NONE
>> b=AS:5050
>> t=0 0
>> a=control:rtsp://
>> 192.168.1.212/Streaming/Channels/101/?transportmode=unicast&profile=Profile_1
>> m=video 0 RTP/AVP 96
>> c=IN IP4 0.0.0.0
>> b=AS:5000
>> a=recvonly
>> a=x-dimensions:3840,2160
>> a=control:rtsp://
>> 192.168.1.212/Streaming/Channels/101/trackID=1?transportmode=unicast&profile=Profile_1
>> a=rtpmap:96 H265/90000
>> a=fmtp:96 sprop-vps=QAEMA///AWAAAAMAgAAAAwAAAwCWAAC94Eg=;
>> sprop-sps=QgEDAWAAAAMAgAAAAwAAAwCWAACgAeAgAhx/jb33am7uS/YC3AQEBBAAAD6AAALuByHe5RAAmRgACsPgAEyMAAVh8EACZGAAKw+AATIwABWHwg==;
>> sprop-pps=RAHBcrCcCgFGZA==
>>
>> a=Media_header:MEDIAINFO=494D4B48010300000400050000000000000000000000000081000000000000000000000000000000;
>> a=appversion:1.0
>>
>> When trying to decode packets i'm getting this output from hevc, the
>> ffplay/VLC works normally with the incoming stream.
>>
>> [hevc @ 0x14ac15600] nal_unit_type: 32(VPS), nuh_layer_id: 0,
>> temporal_id: 0
>> [hevc @ 0x14ac15600] nal_unit_type: 33(SPS), nuh_layer_id: 0,
>> temporal_id: 0
>> [hevc @ 0x14ac15600] nal_unit_type: 34(PPS), nuh_layer_id: 0,
>> temporal_id: 0
>> [hevc @ 0x14ac15600] Decoding VPS
>> [hevc @ 0x14ac15600] Main profile bitstream
>> [hevc @ 0x14ac15600] Decoding SPS
>> [hevc @ 0x14ac15600] Main profile bitstream
>> [hevc @ 0x14ac15600] Decoding VUI
>> [hevc @ 0x14ac15600] Decoding PPS
>> [hevc @ 0x14ac15600] nal_unit_type: 32(VPS), nuh_layer_id: 0,
>> temporal_id: 0
>> [hevc @ 0x14ac15600] Decoding VPS
>> [hevc @ 0x14ac15600] Main profile bitstream
>> [hevc @ 0x14ac15600] nal_unit_type: 33(SPS), nuh_layer_id: 0,
>> temporal_id: 0
>> [hevc @ 0x14ac15600] Decoding SPS
>> [hevc @ 0x14ac15600] Main profile bitstream
>> [hevc @ 0x14ac15600] Decoding VUI
>> [hevc @ 0x14ac15600] nal_unit_type: 34(PPS), nuh_layer_id: 0,
>> temporal_id: 0
>> [hevc @ 0x14ac15600] Decoding PPS
>> [hevc @ 0x14ac15600] nal_unit_type: 19(IDR_W_RADL), nuh_layer_id: 0,
>> temporal_id: 0
>> [hevc @ 0x14ac15600] Format yuvj420p chosen by get_format().
>> [hevc @ 0x14ac15600] Output frame with POC 0.
>> [hevc @ 0x14ac15600] nal_unit_type: 19(IDR_W_RADL), nuh_layer_id: 0,
>> temporal_id: 0
>> [hevc @ 0x14ac15600] First slice in a frame missing.
>> [hevc @ 0x14ac15600] nal_unit_type: 19(IDR_W_RADL), nuh_layer_id: 0,
>> temporal_id: 0
>> [hevc @ 0x14ac15600] First slice in a frame missing.
>> [hevc @ 0x14ac15600] nal_unit_type: 32(VPS), nuh_layer_id: 0,
>> temporal_id: 0
>> [hevc @ 0x14ac15600] Decoding VPS
>> [hevc @ 0x14ac15600] Main profile bitstream
>> [hevc @ 0x14ac15600] nal_unit_type: 33(SPS), nuh_layer_id: 0,
>> temporal_id: 0
>> [hevc @ 0x14ac15600] Decoding SPS
>> [hevc @ 0x14ac15600] Main profile bitstream
>> [hevc @ 0x14ac15600] Decoding VUI
>> [hevc @ 0x14ac15600] nal_unit_type: 34(PPS), nuh_layer_id: 0,
>> temporal_id: 0
>> [hevc @ 0x14ac15600] Decoding PPS
>> [hevc @ 0x14ac15600] nal_unit_type: 19(IDR_W_RADL), nuh_layer_id: 0,
>> temporal_id: 0
>> [hevc @ 0x14ac15600] Output frame with POC 0.
>> [hevc @ 0x14ac15600] nal_unit_type: 19(IDR_W_RADL), nuh_layer_id: 0,
>> temporal_id: 0
>> [hevc @ 0x14ac15600] First slice in a frame missing.
>> [hevc @ 0x14ac15600] nal_unit_type: 19(IDR_W_RADL), nuh_layer_id: 0,
>> temporal_id: 0
>> [hevc @ 0x14ac15600] First slice in a frame missing.
>> [hevc @ 0x14ac15600] nal_unit_type: 1(TRAIL_R), nuh_layer_id: 0,
>> temporal_id: 2
>> [hevc @ 0x14ac15600] Output frame with POC 1.
>> [hevc @ 0x14ac15600] nal_unit_type: 1(TRAIL_R), nuh_layer_id: 0,
>> temporal_id: 2
>> [hevc @ 0x14ac15600] First slice in a frame missing.
>> [hevc @ 0x14ac15600] nal_unit_type: 1(TRAIL_R), nuh_layer_id: 0,
>> temporal_id: 2
>> [hevc @ 0x14ac15600] First slice in a frame missing.
>> [hevc @ 0x14ac15600] nal_unit_type: 1(TRAIL_R), nuh_layer_id: 0,
>> temporal_id: 2
>> [hevc @ 0x14ac15600] Output frame with POC 2.
>> [hevc @ 0x14ac15600] nal_unit_type: 1(TRAIL_R), nuh_layer_id: 0,
>> temporal_id: 2
>> [hevc @ 0x14ac15600] First slice in a frame missing.
>> [hevc @ 0x14ac15600] nal_unit_type: 1(TRAIL_R), nuh_layer_id: 0,
>> temporal_id: 2
>> [hevc @ 0x14ac15600] First slice in a frame missing.
>>
>> If I write the stream to the file and play that file either through
>> ffplay or VLC the frames are rendered normally.
>>
>> Any suggestion would be welcomed.
>>
>> Thanks,
>> Milos
>>
>>  Hey Strahinja,
>>
>> Thanks for the answer,
>>
>> Can you provide more info on how to do it ?
>>
>> Best,
>> Milos
>> _______________________________________________
>> Libav-user mailing list
>> Libav-user at ffmpeg.org
>> https://ffmpeg.org/mailman/listinfo/libav-user
>>
>> To unsubscribe, visit link above, or email
>> libav-user-request at ffmpeg.org with subject "unsubscribe".
>> Hey Milos,
>>
>> In AVFrame structure, check width, height and stride variables.
>>
>>
>> --
>>
>> Regards
>> Strahinja Radman
>> _______________________________________________
>> Libav-user mailing list
>> Libav-user at ffmpeg.org
>> https://ffmpeg.org/mailman/listinfo/libav-user
>>
>> To unsubscribe, visit link above, or email
>> libav-user-request at ffmpeg.org with subject "unsubscribe".
>>
>> Hey Strahinja,
>>
>> It seems that both width & height are set correctly. I can't find stride,
>> i don't see any reference to it in the AVFrame header.
>>
>> Thanks,
>> Milos
>> _______________________________________________
>> Libav-user mailing list
>> Libav-user at ffmpeg.org
>> https://ffmpeg.org/mailman/listinfo/libav-user
>>
>> To unsubscribe, visit link above, or email
>> libav-user-request at ffmpeg.org with subject "unsubscribe”.
>>
>>
>> Hey Milos,
>>
>> What does a parameter linesize say?
>>
>> AVFrame->linesize[0]
>>
>> Kind regards,
>> Strahinja
>>
>>
>>
> Hi Strahinja,
>
> The linesize looks good and corresponds to frame size
>
> frame->linesize[0] = 3840
> frame->linesize[1] = 1920
> frame->linesize[2] = 1920
>
> Best,
> Milos
>
>
>
>
>
> Hey Milos,
>
> Can you use this method to save one frame to the PGM file and check its
> contents right after you receive an AVFrame
>
> static void pgm_save(unsigned char* buf, int wrap, int xsize, int ysize,
> const char* filename)
>  {
> FILE* f;
> int i;
>         f = fopen(filename, "w");
> fprintf(f, "P5\n%d %d\n%d\n", xsize, ysize, 255);
> for (i = 0; i < ysize; i++)
> fwrite(buf + i * wrap, 1, xsize, f);
> fclose(f);
> }
>
> buf is frame->data[0]
> wrap is frame->linesize[0]
> xsize is width and ysize is height
>
> Kind regards,
> Strahinja
>
>
Hi Strahinja,

I'm getting the same result with saved picture, here is the link to the
output (
https://drive.google.com/file/d/1zEABl32ehVu-gnPdqjWciAb7im18VZIf/view?usp=sharing
)

Best,
Milos
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <https://ffmpeg.org/pipermail/libav-user/attachments/20230325/2ee8b5e1/attachment.htm>


More information about the Libav-user mailing list