Closed e2iplayer closed 5 years ago
MJPEG is added but not verified if it works. /dev/dvb/adapter0/video0 ioctl VIDEO_SET_STREAMTYPE, 30
RAW yuv frames I assume it's need in 25frames per seconds. This will exceed the CPU power as the HW should handle around 200MB/s in SW.
Thank you very much for quick answer. I will check MJPEG immediately when I get my Zgemma H9S (I hope on the monday).
May I know if STREAMTYPE for others supported by VPU codecs have been exposed? If yes could you please provide what value they have?
I am asking about:
In case of RAW you right with such bandwidth will be not insufficient for software decoder, but RAW access to video layer will be still useful for photo browser. With such possibility we will be able to display photos in higher resolution then this used by skin in the Enigma2 (gb resolution).
For example we will be able to display pthotos in 4K resolution no others Enigma2 STB can handle this. What do you think?
Thanks again for your quick answer.
please find a list with extensions, I do not know if all versions for realmedia is support. https://github.com/zgemma-star/servicehisilicon/blob/master/servicehisilicon/servicehisilicon.cpp#L46
Please try (linux) grab function it capture raw videoframe and transfers it to png or jpeg. This is used for making OSD and video screenshot.
Hello,
In the servicehisilicon.cpp there is no information about value of STREAMTYPE which should be used for: /dev/dvb/adapter0/video0 ioctl VIDEO_SET_STREAMTYPE, VIDEO_XXX ? and /dev/dvb/adapter0/audio0 ioctl AUDIO_SET_BYPASS_MODE, AUDIO_XXX?
So, what value will be for FLAC and OGG? These codec probably need also extra data in the PES frame to be able to play, can you please provide how they should be formatted before write to /dev/dvb/adapter0/audio0 ? If the format accepted by Broadcom Nexus drivers will be OK?
The RealMedia 8/9/10 (RMVB) codecs are supported at least by Video Decoding (HiVXE 2.0 Processing Engine). At least such information is in the Hi3798M V200 Brief Data Sheet. Please check: https://download.cnx-software.com/index.php/s/9dNHhzZfRYnzLwb#pdfviewer
The question is if the support for these codecs have been exposed via /dev/dvb/adapter0/video0 API?
Please try (linux) grab function it capture raw videoframe and transfers it to png or jpeg. This is used for making OSD and video screenshot.
I think you do not understand me. I do not want to take a screen shot. I am asking about opposite thing: possiblity to decode JPEG/PNG/BMP picture and display it on video layer. So, the display of the resolution such pictures will be limited by video output resolution not by frame buffor resolution.
For example you what to display 4K photos from your holiday on your 4K TV. You connect pendrive/SD card with these photos to your set-top-box and use picture display plugin. With current solution Picture display plugin will not be able to present your photo with 4K resolution because it display it on frame buffer layer, so the max display resolution depend on frame buffer resolution which depend from the skin resolution (at now this is Full HD or HD Ready)
I am requesting possibility to write RAW pixels to the video layer, so in my example you will be able display such photo with 4K resolution. As I wrote there is no Enigma2 set-top-box which is able to do this. But there is many others set-top-box not using Enigma2 which are able to handle this.
Do you want to make your own AV player? The box has an own player which combines FFMPEG SW codec and HW codec.
STB also use player based on gstreamer using /dev/dvb/adapter0/audio0 and /dev/dvb/adapter0/video0 interfaces and also https://github.com/samsamsam-iptvplayer/exteplayer3 (based on ffmpeg libs with cusom patches) which also use /dev/dvb/adapter0/audio0 and /dev/dvb/adapter0/video0 used by IPTVPlayer which improve stability and handle many formats.
The servicehisilicon.cpp is not able to handle correctly many IPTV streams.
I know that FLAC, OGG can be decoded by software and inject to audio decoder as PCM. But this does not have any sense (to waste power of ARM CPU for software decoding) sience these codecs are supported by hardware.
This is why I am asking how to configure /dev/dvb/adapter0/audio0 and /dev/dvb/adapter0/video0 to use all supported by hardware codec. Probably driver team need to expose such possibility?
Another question is a Picture player. Sadly, you not answer anything to my previous explanation.
We do not use gstreamer nor exteplayer3. I think your approach is first ask question before testing.
Please test the player and report running bugs, so this can been forward to Hisilicon. Audio is not really a waste of ARM CPU. The total CPU load is less then 1%. Raw picture however CPU can exceed 100% with high FPS.
You still not understand what I am asking for. I can see now support is very very poor here.
I hopefully will be able to return H9S set-top-box. I also will inform user that this set-top-box do not support IPTVPlayer. You will see how manny buyers you lose.
Raw picture however CPU can exceed 100% with high FPS.
I asked about posiblity to display single picture on video layer. Do you understand this? Single picture. So, about what "exceed 100% with high FPS" you wrote? There will be 1 FPS. Do you understand what photo is? What it is resolution of photo and resolution of frame buffer?
Please test the player and report running bugs, so this can been forward to Hisilicon.
For example your servicehisilicon.cpp does not allow to set custom HTTP header (for example COOKIE header), only custom User-Agent is supported. This will not allow to play some video via HTTP.
Another example: servicehisilicon.cpp does not support DASH format added by me to ffmpeg.
So, as you can see I am not idiot which is asking about strange things. I exactly know about what I am writing.
Should I start report each problem and wait 2, 4 months of one year for fix or maybe never? You really think that you will be able to manage this? I do not think so.
Do you provide DVB Linux API on this set-top-box or not? If not then write this that you support only part Enigma2 STB functionality. So, users will know to NOT bye such set-top-box.
If this set-top-box does not support playback via Linux DVB API then I hope that I will be able to return it immediately. I will also inform all potentially byers about this. To be honest you should do this by yourself.
It is really strange answer "VPU support VORBIS codec but we are using software decoding because you do not know how to play it via VPU" - really bad. If there is possibly to use hardwere then it should be used. Do you agree or not?
so this can been forward to Hisilicon.
Now I understand. You do not how to do this because you do not wrote this player but take it as it is from chipset provider... Well good to know this.
I suggest thinking about your attitude. I wanted to help and make your product better and interest with it users.
Thank you for your kindly negativity. DVB linux API is similar as our Broadcom boxes. You need no enigma2 patch for h9.
Should I start report each problem and wait 2, 4 months of one year for fix or maybe never
So you do want to use/make a different mediaplayer. You need probably AV SDK which contains thousands of papers. You need to request it by Hisilicon and sign a NDA. However even Hisilicon doesn't provide everything and leave as well some part closed like actually complete FFMPEG part.
Good luck with your own project. I assume 99% is already inside FFMPEG and you can use Kodi and lot other projects as example to figure out what you want to do by HW codec or SW codec/FFMPEG code. FB you can set in the box.
Good luck with it and DASH only with full support of DRM is interest.
Good luck with it and DASH only with full support of DRM is interest.
Really? Maybe for you. You really don't know what are you talking about. There is manny services provide content via clear DASH.
FOR EXAMPLE YOUTUBE. Maybe you hear about youtube?
So you do want to use/make a different mediaplayer. You need probably AV SDK which contains thousands of papers. You need to request it by Hisilicon and sign a NDA.
No! I never request this. The only what I requested is to provide possibility to handle all supported by chipset codecs via /dev/dvb/adapter0/audio0 and /dev/dvb/adapter0/video0 interfaces.
When you have such possibility then you can write (a part of player responsible for receiving and demultiplexing data) based on ffmpeg, gstreamer or anything other you like. This is how it works with all Broadcom drivers.
So, to be clearly (because I see that you do not understand anything) you need only to write part of mediaplayer responsible for receiving and demultiplexing audio/video and PES frame formatter, decoding and synchronization is part of code provided by HiSilicion.
Another thing was to have write access to video layer to be able to display photos in better resolution. For 100% HiSilicon give such possibility, because Broadcom, ST, MStar give such possiblity with their SDK. But there is need to guys providing DVB drivers to expose API from SDK.
For sure you have person with more knowledge than you and maybe you can give me contact to he?
The player should support follow:
Video: MPEG2, MPEG4, AVS, H263, H264, REAL8, REAL9, VC1, VP6, VP6F, VP6A, MJPEG, SORENSON, DIVX3, RAW, JPEG, VP8, MSMPEG4V1, MSMPEG4V2, MSVIDEO1, WMV1, WMV2, RV10, RV20, SVQ1, SVQ3, H261, VP3, VP5, CINEPAK, INDEO2, INDEO3, INDEO4, INDEO5, MJPEGB, MVC, HEVC, DV, HUFFYUV, VP9, WMV3, AVS2, BUTT
Audio: MP2, MP3, AAC, AC3, DTS, VORBIS, DVAUDIO, WMAV1, WMAV2, MACE3, MACE6, VMDAUDIO, SONIC, SONIC_LS, FLAC, MP3ADU, MP3ON4, SHORTEN, ALAC, WESTWOOD_SND1, GSM, QDM2, COOK, TRUESPEECH, TTA, SMACKAUDIO, QCELP, WAVPACK, DSICINAUDIO, IMC, MUSEPACK7, MLP, GSM_MS, ATRAC3, VOXWARE, APE, NELLYMOSER, MUSEPACK8, SPEEX, WMAVOICE, WMAPRO, WMALOSSLESS, ATRAC3P, EAC3, SIPR, MP1, TWINVQ, TRUEHD, MP4ALS, ATRAC1, BINKAUDIO_RDFT, BINKAUDIO_DCT,DRA, DTS_EXPRESS, PCM, PCM_BLURAY, ADPCM, AMR_NB, AMR_WB, AMR_AWB, RA_144, RA_288, DPCM, G711, G722, G7231, G726, G728, G729AB, MULTI, BUTT
Please, as now it's clear (many messages of you are edit and concept changed) you want to use the native player and not hijack the audio/video or use an external player.
Test the player as I ask and report what you think is not ok. It's easy you add a link of mediacontent. Please, do not come with Enigma2 problems only driver related problems.
There is no concept change I edit message only to fix misspelling or add explanation.
Maybe too many things at once. So, maye one by one.
Hello,
I want to make small update here. I just got the Zgemma H9S set-top-box and for now I am really impressive :) You wrote that you do not use gstreamer for playback but it can be used, so there is possible to use media playback via /dev/dvb/adapter0/audio0 and /dev/dvb/adapter0/video0 interfaces. This is very good news. Because exteplayer3 can be used as well.
Playback of 4K movies 30fps with codec H264 works! I think that there is no Broadcom based set-top-box which can do this :)
Unfortunately playback via /dev/dvb/adapter0/audio0 and /dev/dvb/adapter0/video0 interfaces works very, very bad on H9.
Many files does not work at all. For example it is not possible to play H.265 via /dev/dvb/adapter0/video0
Even if some codec works like H264 it works very bad. There is many macroblocks and so on. Play/Pause works very badly.
There is no such problem when using servicehisilicon but this cause many disadvantage.
Normally in the Enigma2 media player have two parts:
First part - OpenSource part which is responsible to receive data, demultiplexing them, format AUDIO/VIDEO frame adding PES header and codec specific data and injecting this frame to /dev/dvb/adapter0/video0 and /dev/dvb/adapter0/audio0.
Second part - closed source, driver part, provide interface for /dev/dvb/adapter0/video0 and /dev/dvb/adapter0/audio0
But /dev/dvb/adapter0/video0 and /dev/dvb/adapter0/audio0 in the H9 are bad. So, they create separate media player called servicehisilicon, this player do NOT use /dev/dvb/adapter0/video0 and /dev/dvb/adapter0/audio0 interfaces. So, there is no OpenSource part which will allow to add new format, protocol and so on.
All is closed. So, only set-top-box driver provider can made fix or add support for example for some streaming protocols.
In such way this set-top-box is unusable for IPTV unless /dev/dvb/adapter0/audio0 and /dev/dvb/adapter0/video0 will be fixed.
This is very bad news because hardware is very good, but drivers unfortunately are not.
I want to ask driver team to extend DVB API to take full advantage of the Hi3798M V200 SoC capabilities.
The SoC have JPEG decoder, so the question is if driver team can add support for VIDEO_SET_STREAMTYPE -> VIDEO_STREAMTYPE_MJPEG? So, it can be used to play stream for example from IP cameras.
Also if possible VIDEO_STREAMTYPE_RAW (or YUV or something like that) will be BIG improvements which will allow to use software video decoding.
If this will be to hard maybe some API can be provided to allow use hardware JPEG/PNG decoder and write access to video layer?
Possibility to display RAW pixels on video layer will be really very nice. At now on all STB with Enigma2 the display resolution of photos is limited to frame buffer resolution. With API to write access video layer it will be limited to the output resolution not to frame buffer resolution it wil made huge diffrence. Aslo implementation media player using software decoders will be possible.
The ideal solution will be to have VIDEO_SET_STREAMTYPE (with RAW pixels) for example (VIDEO_STREAMTYPE_RAW_YUV) to push software decoded frame to video decoder. In such solution the audio/video synchronization should be handled by direvers. So, RAW frames should be written with some header with PTS.
But probably it will need more work for driver team.
As alternative the driver team can provide other API to just access video layer in the write mode with Double Buffering or Triple Buffering.
Such possiblity will for sure be used by manny plugins and make ZGEMMA STB matchless.
Could you please answer if adding such API will be possible?