I am trying to design a video transmission system for HEVC standard. I have installed and compiled HEVC with the help of (JCTVC HM Software Manual). The problem is that whenever I simulate the HEVC for decoding erroneous frames, the Decoder fails to operate/decode those frames, showing the message "Assertion 'binVal' failed". Could you please help me in solving this issue?
Well, legacy HM software does not support so-called packet-loss, like in JSVM (Scalable AVC).
Related
I'm unable to find any mention of CRF in the NvEnc documentation and the Nvidia developer forum. There are quite a few speculations to be found online, in relation with ffmpeg (as in "doesn't seem to be supported"), but nothing really definite nor up-to-date. Can anybody shed some light on this? In case it really isn't supported, is there a technical reason or will it be added in the future?
Thanks!
crf (constant rate factor) is a video quality setting that only exists in x264 and x265. It is not part of the HEVC standard, so don't expect to find it in any other HEVC encoder.
I am working on a chat application like whatsApp, I want to transcode media file before uploading to server,I have gone through so many links but not able to decide which method i should use, is there any straight forward way of transcoding in android ?
FFMPEG i found it is highly cpu intensive process ,it will consume more battery power
Media Codec i want to do the transcoding using mediacodec but not able to get proper steps to understand the process.
Best link to give idea about transcoding
Library to transcode using media codec (It has many bugs)
We used both implementation for our video editing app. Basically we used MediaCodec implementation if android version >= 4.3 and use FFMPEG otherwise.
The problem with using FFMPEG:
As you said, cpu intensive process thus consume more battery
x264 encoder is licensed under GPL, so you might want to use OpenH264 encoder instead which only support Baseline Profile, therefore video quality is not the best
Since it used software encoder, processing speed is relatively slow, at least compared to the MediaCodec implementation
MediaCodec also have some cons though, for example:
If you want to do transcoding, android version need to be >= 4.3 unless you want to deal with color format conversion yourself, which is completely mess, since each vendor may have it's own color format implementation. (Since 4.3, MediaCodec support encoding using input surface)
Hardware encoder may behave differently for different models. (For example some encoder may produces B frames which is not supported yet by android MediaMuxer, so you may want to use ffmpeg for the muxing part)
So I should say if you only support new android version, you should use mediacodec, but if you want to be safe (easier to write code that works on all device) and does not really mind the performance, use FFMPEG with OpenH264
Android's MediaCodec is a relatively better way to transcode on the client since it uses its own low level buffer processing. But then it doesn't provide elaborate tweaking freedom as FFMpeg does.
As to MediaCodec source code, it also is CPU intensive for holding the buffers and processing them but its actually way lesser than FFmpeg.
I am trying to test decoding a h264/h265 video (with just a single iframe) using DX11 and DXVA2. This is on windows 7 so I probably have to interop between 2 d3d11 devices, one with 11.1 feature set and the other with 9.3. My question is since there is a severe lack of samples for loading a h264 file and decoding it using DXVA, I was wondering if there is a guide for how to layout the data to feed into DXVA to decode? I've read this How do I use Hardware accelerated video/H.264 decoding with directx 11 and windows 7? as well as https://msdn.microsoft.com/en-us/library/windows/desktop/hh162912(v=vs.85).aspx but neither has any guide on how to do the above.
Thanks
If you want a working sample to understand how to feed data into DXVA, look here : MFNode. Under MFTDxva2Decoder, you will see how to feed data. It is for mpeg1/2 file format, but the same apply to H264 (with shades, of course).
EDIT
See my response : How do I use Hardware accelerated video/H.264 decoding with directx 11 and windows 7?
i need to encode my audio PCM raw stream to AMR. but i didn't find anything much regarding that.i need to know is it possible to use Hardware MFT for encoding and decoding the Audio stream. if yes then how it is possible some idea please.
or any other way to encode Audio Stream from PCM raw to AMR codec?
I posted this question in Microsoft forum and i got the answer, the answer is Microsoft doesn't support in-build AMR codec, to support AMR codec in windows phone we need to use Third Party Codec Library.
The response was:
Unfortunately it doesn't appear that we supply an AMR encoder in box. Because of this you will need to find a 3rd party encoder or use the in box low latency mp4 codec that we do provide.
and then also:
Let me try and clarify. We have limited AMR, 3GP and h.263 support for Windows Phone Silverlight apps. Encoding support for these codecs is not exposed in Runtime apps since we do not provide a default encoding profile implementation. These codecs should only be exposed in Silverlight. There doesn't appear to be a runtime activateable class associated with these codecs so there is no reflection into Media Foundation.
I'm interested in learning how to decode and playback audio in ActionScript 3. I understand how to write bytes to a Sound object using the SAMPLE_DATA event, so that's not really a problem. What I want to understand is how I could implement alternate audio formats for native playback inside of Flash Player.
I guess what I'm asking is: how do I take something in X format and "convert/decode" it to WAV format and write the bytes to a Sound object, playing back the audio? I'm interested in writing a decoder for FLAC audio and possibly OGG audio, as these seem to be some of the most widely used open source audio formats.
Can anyone give me any advice on this?
If you want to write a decoder, the first thing you should probably look at is the spec for the format you want to decode.
The ogg/vorbis spec can be found here: http://xiph.org/vorbis/doc/Vorbis_I_spec.html.
Also, it could be of help to take a look (or maybe port) some other open source library that already does this (I'm not aware of any written in Actionscript), such as this, in Java: http://www.jcraft.com/jorbis/ (I don't know this library, I've just found it googling "ogg vorbis open source".
At any rate, you'll have to put some work to get it working and I don't mean this to discourage you, but I'm not sure Actionscript is fast enough for real time audio decoding.
You can try, but you're not going to have much grunt left to do other stuff. Prior to Flash 10, I wrote an article detailing a hack to feed PCM data into sound output in Flash. Someone got in touch because they had written an AS3 Ogg decoder, but... even after fully optimzing the code, it was found that AVM2 is really not that much up to the job. Basically, it's rather slow and decoding OGG is quite processor intensive. I can't see that things will have changed that much in the years since, because CPUs have become "wider" and not really that much faster. ActionScript is single threaded, so you can't offload to another core.
Probably worth checking out this... maybe performance has improved.
EDIT: Having said all that, as Juan has said, don't be discouraged by this answer. I suspect the computational demands of FLAC decoding are probably considerably less than OGG, and if DSP gets you excited, taking the time to figure all this stuff out is 100% worth it, even if the Flash route (possibly) leads to disappointment. Personally I think that the MediaStreamSource for Silverlight looks really promising,but haven't really dabbled that much.