On Wed, Oct 27, 2021 at 11:50:04AM +0300, Jan Ekström wrote: > On Thu, Oct 14, 2021 at 5:31 PM <lance.lmw...@gmail.com> wrote: > > > > On Thu, Oct 14, 2021 at 10:12:05AM -0400, quietvoid wrote: > > > On Thu, Oct 14, 2021 at 9:52 AM <lance.lmw...@gmail.com> wrote: > > > > > > > On Thu, Oct 14, 2021 at 09:45:45AM -0400, quietvoid wrote: > > > > > On Thu, Oct 14, 2021 at 9:36 AM <lance.lmw...@gmail.com> wrote: > > > > > > > > > > > On Thu, Oct 14, 2021 at 09:18:16AM -0400, f tcChlisop0 wrote: > > > > > > > On Thu, Oct 14, 2021 at 9:10 AM <lance.lmw...@gmail.com> wrote: > > > > > > > > > > > > > > > From: Limin Wang <lance.lmw...@gmail.com> > > > > > > > > > > > > > > > > By <<Dolby Vision Streams Within the MPEG-2 Transport Stream > > > > > > > > Format > > > > > > v1.2>> > > > > > > > > > > > > > > > > Signed-off-by: Limin Wang <lance.lmw...@gmail.com> > > > > > > > > --- > > > > > > > > libavformat/mpegts.c | 11 +++++++++-- > > > > > > > > 1 file changed, 9 insertions(+), 2 deletions(-) > > > > > > > > > > > > > > > > diff --git a/libavformat/mpegts.c b/libavformat/mpegts.c > > > > > > > > index 44d9298..774964d 100644 > > > > > > > > --- a/libavformat/mpegts.c > > > > > > > > +++ b/libavformat/mpegts.c > > > > > > > > @@ -2178,6 +2178,8 @@ int > > > > > > > > ff_parse_mpeg2_descriptor(AVFormatContext > > > > > > *fc, > > > > > > > > AVStream *st, int stream_type > > > > > > > > AVDOVIDecoderConfigurationRecord *dovi; > > > > > > > > size_t dovi_size; > > > > > > > > int ret; > > > > > > > > + int dependency_pid; > > > > > > > > + > > > > > > > > if (desc_end - *pp < 4) // (8 + 8 + 7 + 6 + 1 + 1 + > > > > 1) / 8 > > > > > > > > return AVERROR_INVALIDDATA; > > > > > > > > > > > > > > > > @@ -2193,7 +2195,11 @@ int > > > > ff_parse_mpeg2_descriptor(AVFormatContext > > > > > > *fc, > > > > > > > > AVStream *st, int stream_type > > > > > > > > dovi->rpu_present_flag = (buf >> 2) & 0x01; // > > > > > > > > 1 > > > > bit > > > > > > > > dovi->el_present_flag = (buf >> 1) & 0x01; // > > > > > > > > 1 > > > > bit > > > > > > > > dovi->bl_present_flag = buf & 0x01; // > > > > > > > > 1 > > > > bit > > > > > > > > - if (desc_end - *pp >= 20) { // 4 + 4 * 4 > > > > > > > > + if (!dovi->bl_present_flag && desc_end - *pp >= 2) > > > > > > > > { > > > > > > > > + buf = get16(pp, desc_end); > > > > > > > > + dependency_pid = buf >> 3; // 13 bits > > > > > > > > + } > > > > > > > > + if (desc_end - *pp >= 1) { // 8 bits > > > > > > > > buf = get8(pp, desc_end); > > > > > > > > dovi->dv_bl_signal_compatibility_id = (buf >> > > > > > > > > 4) & > > > > > > 0x0f; > > > > > > > > // 4 bits > > > > > > > > } else { > > > > > > > > @@ -2210,12 +2216,13 @@ int > > > > ff_parse_mpeg2_descriptor(AVFormatContext > > > > > > *fc, > > > > > > > > AVStream *st, int stream_type > > > > > > > > } > > > > > > > > > > > > > > > > av_log(fc, AV_LOG_TRACE, "DOVI, version: %d.%d, > > > > profile: > > > > > > %d, > > > > > > > > level: %d, " > > > > > > > > - "rpu flag: %d, el flag: %d, bl flag: %d, > > > > > > compatibility > > > > > > > > id: %d\n", > > > > > > > > + "rpu flag: %d, el flag: %d, bl flag: %d, > > > > > > > > dependency_pid: %d, compatibility id: %d\n", > > > > > > > > dovi->dv_version_major, > > > > > > > > dovi->dv_version_minor, > > > > > > > > dovi->dv_profile, dovi->dv_level, > > > > > > > > dovi->rpu_present_flag, > > > > > > > > dovi->el_present_flag, > > > > > > > > dovi->bl_present_flag, > > > > > > > > + dependency_pid, > > > > > > > > dovi->dv_bl_signal_compatibility_id); > > > > > > > > } > > > > > > > > break; > > > > > > > > -- > > > > > > > > 1.8.3.1 > > > > > > > > > > > > > > > > _______________________________________________ > > > > > > > > ffmpeg-devel mailing list > > > > > > > > ffmpeg-devel@ffmpeg.org > > > > > > > > https://ffmpeg.org/mailman/listinfo/ffmpeg-devel > > > > > > > > > > > > > > > > To unsubscribe, visit link above, or email > > > > > > > > ffmpeg-devel-requ...@ffmpeg.org with subject "unsubscribe". > > > > > > > > > > > > > > > > > > > > > > Hi, this is something I had fixed in this patchset: > > > > > > > https://ffmpeg.org/pipermail/ffmpeg-devel/2021-September/286234.html > > > > > > > However the dependency_pid is ignored, as it has no use presently. > > > > > > > > > > > > > > Which patch should take precedence? > > > > > > > > > > > > Sorry, I have noticed your patch before. By the quick review of your > > > > patch, > > > > > > it's a lot function change and difficult to merge I think. I prefer > > > > > > to > > > > > > fix the issue with existing code first instead of mixed function > > > > change. > > > > > > > > > > > > > > > > Okay, that makes sense. > > > > > I will wait and rebase before resending for review then. > > > > > > > > > > However I'm worried my patch will still result in ignoring > > > > dependency_pid, > > > > > because it is not part of AVDOVIDecoderConfigurationRecord, unless it > > > > > is > > > > > added. > > > > > > > > I failed to find your patchset in my email archive, so I reply it here > > > > for > > > > my comments: > > > > - if (ret < 0) { > > > > - av_free(dovi); > > > > + if ((ret = ff_isom_parse_dvcc_dvvc(fc, st, *pp, desc_len, > > > > 1)) > > > > < 0) > > > > return ret; > > > > - } > > > > > > > > I think it's wrong to use ff_isom_parse_dvcc_dvvc() here for mpegts > > > > use DOVIVideoStreamDescriptor, ISOM use DOVIDecoderConfigurationRecord. > > > > they're different syntax if you have checked the two specs. So your > > > > parsing isn't > > > > follow the specs as dependency_pid is used by DOVIVideoStreamDescriptor. > > > > > > > > > > That's true, however they only differ by dependency_pid. > > > This is a concern I've noted here: > > > https://ffmpeg.org/pipermail/ffmpeg-devel/2021-September/286159.html > > > > But they're different descriptor anyway, in fact only the first 4 bytes is > > same, > > after that: > > DOVI_video_stream_descriptor: > > if (!bl_present_flag) { > > dependency_pid 13 bits > > reserved 3 bits > > } > > dv_bl_signal_compatibility_id 4 bits > > reserved 4 bits > > > > DOVIDecoderConfigurationRecord > > dv_bl_signal_compatibility_id 4 bits > > reserved 28 bits > > reserved 32*4 bits > > > > Now the side data prefer to use DOVIDecoderConfigurationRecord, so mpegts > > should > > parse by the DOVI_video_stream_descriptor syntax and store the result in > > DOVIDecoderConfigurationRecord only. > > > > If the MPEG-TS stuff informs one regarding the other PID to utilize > for EL use cases, we might want to extend the configuration record to > either contain an AVStream * pointer, or a stream index (or stream > id), so it can be referred to by the API client? And then when writing > the metadata to MP4 we would have to not allow it, since I think the > MP4 side doesn't allow it (unless I recall the DoVi MP4 spec > incorrectly).
I haven't got such sample which use the dependency_pid yet, most of sample set bl_present_flag as 1. MP4 use DOVIDecoderConfigurationRecord, but mpegts use DOVI_video_stream_descriptor. if we want to keep all information, the side data of DOVI is better to use DOVI_video_stream_descriptor. If we add one more field to DOVIDecoderConfigurationRecord, I think it's misleading. > > Jan > _______________________________________________ > ffmpeg-devel mailing list > ffmpeg-devel@ffmpeg.org > https://ffmpeg.org/mailman/listinfo/ffmpeg-devel > > To unsubscribe, visit link above, or email > ffmpeg-devel-requ...@ffmpeg.org with subject "unsubscribe". -- Thanks, Limin Wang _______________________________________________ ffmpeg-devel mailing list ffmpeg-devel@ffmpeg.org https://ffmpeg.org/mailman/listinfo/ffmpeg-devel To unsubscribe, visit link above, or email ffmpeg-devel-requ...@ffmpeg.org with subject "unsubscribe".