2020-12-21, 17:42
(2020-12-21, 13:46)fandangos Wrote:You can disregard the black screen bug. After a restart it plays fine with the amc-hevc codec. So it seems like it's the mime type that matters.(2020-12-21, 12:24)sk83 Wrote: @fandangos
Added some logging to DVDVideoCodecAndroidMediaCodec to see the actual values of the MK/MKBETAGS, as well as the value of m_hints.codec_tag:
Code:CLog::Log(LOGINFO, "M_HINTS_CODEC_TAG: %d", m_hints.codec_tag);
CLog::Log(LOGINFO, "dvhe_b: %d", MKBETAG('d', 'v', 'h', 'e'));
CLog::Log(LOGINFO, "dvh1_b: %d", MKBETAG('d', 'v', 'h', '1'));
CLog::Log(LOGINFO, "dvcC_b: %d", MKBETAG('d', 'v', 'c', 'C'));
CLog::Log(LOGINFO, "dvvV_b: %d", MKBETAG('d', 'v', 'V', 'C'));
CLog::Log(LOGINFO, "dvhe: %d", MKTAG('d', 'v', 'h', 'e'));
CLog::Log(LOGINFO, "dvh1: %d", MKTAG('d', 'v', 'h', '1'));
CLog::Log(LOGINFO, "dvcC: %d", MKTAG('d', 'v', 'c', 'C'));
CLog::Log(LOGINFO, "dvvC: %d", MKTAG('d', 'v', 'v, 'C'));
Which generates this output:
Code:INFO <general>: M_HINTS_CODEC_TAG: 0
2020-12-21 10:54:43.198 T:10961 INFO <general>: dvhe_b: 1685481573
2020-12-21 10:54:43.198 T:10961 INFO <general>: dvh1_b: 1685481521
2020-12-21 10:54:43.198 T:10961 INFO <general>: dvcC_b: 1685480259
2020-12-21 10:54:43.198 T:10961 INFO <general>: dvvV_b: 1685476931
2020-12-21 10:54:43.198 T:10961 INFO <general>: dvhe: 1701344868
2020-12-21 10:54:43.198 T:10961 INFO <general>: dvh1: 828929636
2020-12-21 10:54:43.198 T:10961 INFO <general>: dvcC: 1130591844
2020-12-21 10:54:43.198 T:10961 INFO <general>: dvvC: 1131837028
Seems like the m_hints.codec_tag is always 0 for MKV containers, tested with SDR, HDR10 and DV HEVC.
For MP4/MOV containers m_hints.codec_tag seems to work. I get 1701344868(which corresponds to MKTAG('d','v','h','e'), 828929636(MKTAG('d','v','h','1'), and last, 828601960 for an ordinary HDR10 MP4.
So it seems like a method for getting the codec_tag from MKVs needs to be implemented.
Nice, thanks for helping out.
Yes I suspect it would be always 0 and when something like that happens in my experience I just try to find something else.
If you look at your log you will see Side Data, this is one option.
Quote:INFO <general>: ffmpeg[0x2fbb06e040X]: DOVI configuration record: version: 1.0, profile: 7, level: 6, rpu flag: 1, el flag: 1, bl flag: 1, compatibility id: 6
This is done by av_packet_get_side_data
That's option number 1.
The second is to do something like MediaInfo did:
https://github.com/MediaArea/MediaInfoLi...11f3b2aff4
Quote:switch (BlockAddIDType)
{
case 0x64766343: // dvcC
case 0x64767643: // dvvC
Element_Name("Dolby Vision Configuration");
dvcC();
break;
case 0x68766345:
Element_Name("Dolby Vision EL HEVC");
#if MEDIAINFO_TRACE
if (Trace_Activated)
{
The first method would be much cleaner and have higher chances of being merged.
The problem is that I suck at writting C++ from scratch.
Now next problem, here with the Nvidia Shield TV Pro (2019) I got no black screen with "amc-hevc" and the movie plays just fine, colors seemed ok, tried with UHD BD Remux.
With "amc-dvhe" I get a ton of stuttering.
And I have not tested amc-dvh1.
So yeah... this will be a little bit harder but I think we can do it.
Regarding the ffmpeg log entry, I'm not seeing it. I have a suspicion I'm not building with your FFMPEG-fork - Is the correct place in the source treea
Code:
tools/depends/target/ffmpeg
Code:
tools/depends/target/binary-addons/aarch64-linux-android-21-debug/build/ffmpeg/src/ffmpeg/