H.265/HEVC web browser support [closed] - browser

Closed. This question does not meet Stack Overflow guidelines. It is not currently accepting answers.
We don’t allow questions seeking recommendations for books, tools, software libraries, and more. You can edit the question so it can be answered with facts and citations.
Closed 2 years ago.
Improve this question
Are there any web browsers out there that can playback the H.265 / MPEG-4 HEVC codec in a html5 video element? On what platform or hardware?
I heard rumours about HEVC support in Edge when hardware decoding is available. With current GPUs and CPUs shipping with HEVC hardware decoding I wonder which other browser vendors are following. Firefox already works like this for H.264

No, no browser supports H.265. And wide support is not likely to be added in the near future.
EDIT:
I updated the question because there are reports of it working in Edge when hardware decoding is available.
This is a good point.
In this case, the browser still does not support it. It is offloading decoding to the OS (Windows), and the OS is offloading to the hardware. But the result is the same as having browser support. This becomes cheaper, because the license was paid for by the chip company.
Background:
H.265 licensing has historically been extremely expensive. In some cases orders of magnitude more expensive than H.264. MPEG-LA and HEVC Advance patent pools expected companies like apple and Microsoft to pay for it. But they got too greedy (specifically HEVC Advance) by eliminating price caps, so Microsoft would have had to pay hundreds of millions of dollars for H.265, where H.264 caps out in the low millions. HEVC Advance has changed the licensing policy, but it may be too late, as google Microsoft, Amazon, Netflix, Cisco, Mozilla and others are developing a royalty free alternative (under the name Alliance for Open Media) so online video can never be held hostage again.

It works in IE and Edge but only if there is hardware support. It's also reported to work in Android browser and Chrome for Android on some devices that have hardware support.
Source: https://caniuse.com/#feat=hevc
n.b. If you strive to use h.265 to embed better quality video in your web content you should also consider transcoding and including webm: http://caniuse.com/webm/embed/. Support is flaky as well, but will absolutely improve rapidly as chip manufacturers are increasingly including hardware acceleration for both standards (HEVC and VP9)

Chromium can support h.265 when compiled with the aforementioned codec enabled during compilation.
Check it out - https://github.com/henrypp/chromium/releases
Those are all 64 bit releases, so make sure you install them on 64 Bit Windows only.

Edge on Windows 10 supports HEVC if the appropriate app is installed from the Microsoft Store.
Paid:
https://www.microsoft.com/en-us/p/hevc-video-extensions/9nmzlz57r3t7?activetab=pivot:overviewtab
Free:
https://www.microsoft.com/en-us/p/hevc-video-extensions-from-device-manufacturer/9n4wgh0z6vhq?activetab=pivot:overviewtab

Related

Is Opus supported for VoLTE?

There are so many different codecs for phone calls and many of them have very high license fees, meaning it will take a lot of time before everyone can use normal telephony with wide band audio.
Is Opus supported for VoLTE?
The usual codecs for VoLTE are AMR, AMR-WB and EVS (see links below for more info - thanks, #Mikael Dúi Bolinder).
As with most mainstream voice (and video codecs) there is IPR and licensing associate with these. However, for end users the network providers and device manufacturers have included the licensing and the codecs in their rollouts so a typical operator service will use these.
I'm not aware of any restrictions from 3GPP on using other codecs if the devices and the network support them, but the above are definitely the default and the most widely used.
If you want to create your own voice service, e.g a VoIP service running over the data connection to the phone, then in theory you can use whatever codec you want. It's worth being aware that for software based codecs, which they will be unless they are tightly integrated in the device's hardware, the efficiency is important as an inefficient implementation may impact performance, battery life etc.
For Opus in particular there are several open source projects which provide Android libraries for this, for example. Opus is also supposed to be supported on devices from Android 5+ (https://developer.android.com/guide/topics/media/media-formats).
amr-licensing-wikipedia: https://en.wikipedia.org/wiki/Adaptive_Multi-Rate_audio_codec#Licensing_and_patent_issues "AMR licensing (and issues) on Wikipedia"
amr-wb-licensing-wikipedia: https://en.wikipedia.org/wiki/Adaptive_Multi-Rate_Wideband#Licensing "AMR-WB licensing on Wikipedia"
evs-news-patent-pool: http://www.mpegla.com/Lists/MPEG%20LA%20News%20List/Attachments/97/n-16-01-20.pdf "MPEG developing a patent pool for EVS"

How to start working with Bluetooth 4.0? [closed]

Closed. This question needs to be more focused. It is not currently accepting answers.
Want to improve this question? Update the question so it focuses on one problem only by editing this post.
Closed 9 years ago.
Improve this question
I am interested in Bluetooth 4.0. Where to start adventure with it? If you have any materials, links, books I'll be very grateful. If you could share this knowledge. I would to use BT 4.0 to connect a PC (no matter what system) with a smart phone (eg. Windows Phone).
Right, I tried to quickly put together some relevant information that might help you. There is a big chance I have missed thing because this is a broad topic.
I am pretty sure you will find help here when you will have more specific questions.
Basically when it comes to Bluetooth (Smart, 4.0) devices and programming / connecting to them we can talk about two things:
Bluetooh Clients and Servers
Servers:
usually provide some data to clients. Think about a Heart rate monitor that captures someones heartrate and "stream" it so anyone who connects to the server will be able to read the data.
Clients:
On the other hand clients connect to servers (how obvious) to collect their data, or in some cases to write to them.
Bluetooth Profiles
Bluetooth devices (servers) have so called GATT (generic attribute) Profiles. These profiles describe a kind of unique set of Services. Each Service has different Characteristics. These characteristics hold the actual values.
Think about a Heart rate monitor (HRM). Thats a server. It measures heart rate so clients that connect to it can read / collect it's data. Heart rate monitors have a specific Heart rate monitor GATT profile which describes services and inside the services there are the heart rate specific characteristics like: heart rate measurement, body sensor location, etc.
When a client wants to read these values it has to connect to the HRM, discover it's services and characteristics, then read the values from the discovered characteristics.
Async
It might be obvious but Bluetooth programming (implementing server / client connection and data transfer) is async. It means the client sends something then waits till the server answers then can the it progress to the next step.
Your whole software has to be implemented keeping async programming design in mind.
Documentation
I have to say I found the iOS documentation and support very useful when I developed my first bluetooth app.Android was somewhat more difficult for me because of the lack of examples I found. Also general bluetooth 4.0 support only became available since Android 4.3. (different bluetooth chip manufacturers in different Android phones had different low level bluetooth stack so to use them one had to write native bluetooth code for each different chip with their own SDK - prior to Android 4.3)
Bluetooth.org
I would suggest to start with this:
https://developer.bluetooth.org/DevelopmentResources/Pages/Quick-Start-Kit.aspx
https://developer.bluetooth.org/TechnologyOverview/Pages/Technology-Overview.aspx
https://developer.bluetooth.org/DevelopmentResources/Pages/default.aspx
https://developer.bluetooth.org/gatt/Pages/default.aspx
iOS
It won't hurt if you read about Core-bluetooth framework, which is the iOS approach even if you don't plan to develop on iOS. Since it is well documented it might give you a better overall understanding:
https://developer.apple.com/library/ios/documentation/NetworkingInternetWeb/Conceptual/CoreBluetooth_concepts/AboutCoreBluetooth/Introduction.html
Android
Same for android:
http://developer.android.com/guide/topics/connectivity/bluetooth-le.html
Windows 8
http://msdn.microsoft.com/en-us/library/windowsphone/develop/jj207007%28v=vs.105%29.aspx
I've found "Bluetooth Low Energy: The Developer's Handbook" by Robin Heydon very useful. It deals with all the little details so you can understand how things are working on the lower level.
As a reference, I've found the Bluetooth specification PDF very useful (though it's sometimes hard to find what you need). It looks like they just released a 4.1 version here: https://www.bluetooth.org/en-us/specification/adopted-specifications
EDIT: both references aren't specific to any particular implementation, so I'm not sure how much they'd help if you wanted to learn something specific like iOS BLE or Android BLE.

Which developer roles or titles are needed to build a software DAW?

So far, I've used many different Audio Production software on Mac and Windows platforms. Often times, I ponder on the idea of creating my own DAW, but I realize that would be an extremely difficult challenge for a single person to undertake (especially if only knowledgeable in one particular area / language of programming).
There's a flood of ideas / features that comes to my mind just by the thought of some of the other DAWs I've used. From implementing MIDI in/out, Audio Routing, Mix Buses, VST support, User Interface for a Piano Roll and Song view, etc...
So my question is...
Which roles would be required in a team of developers to create a complete Digital Audio Workstation (DAW) Software?
I think the right answer is several good developers (you don't need so many, perhaps 3) a good product manager, an ui designer/graphist a lot of testers. And a good coffee machine.
The real problem is what kind of DAW do you want, portable on mac and windows, which OSs, which formats (vst 2, 3, AU, RTAS, AAX, rack extension, DX), do you want only MIDI and adio tracks, which external MIDI devices you want to support, do you support OSC, other protocols?
What will be the features of you mixer, integrated effects? What support of audio API on windows (wasapi, asio ...) do you want some cloud feature ? community or online store integration?
What kind of breakthrough would you have compared to cubase, live, PT, DP, Logic, garage band, bitwig, studio one, sonar, fl studio ...? Do you want modular patches or just tracks? Will you have advanced integrated controls or midi modifiers?
All that is the problem...
This is a very complex question!

Software sound cancelling (destructive interference) tools on Linux? [closed]

Closed. This question does not meet Stack Overflow guidelines. It is not currently accepting answers.
We don’t allow questions seeking recommendations for books, tools, software libraries, and more. You can edit the question so it can be answered with facts and citations.
Closed 4 years ago.
Improve this question
I am looking at writing some software that will allow me to listen to music whilst talking with someone on skype. The problem is that if you do this with speakers the music also gets transferred to the other user, which is what I want to avoid.
So I was thinking about writing something that will, by listening to the output of my music application, cancel out those sounds from the microphone input sent to skype.
I have searched Google a bit, but maybe someone here can kickstart this project with some pointers/ideas/etc...
EDIT: has anybody used JACK before?
What you want to do is basically the same as Echo cancellation in telephony.
http://www.voip-info.org/wiki/view/Asterisk+echo+cancellation is simple introduction. Also have a look at the pages for the mark and mark2 echo canceller there and the mentioned TI application note.
Also this site:
http://www.embeddedstar.com/articles/2003/7/article20030720-1.html
explains the mechanics quite well.
You'll have to intercept both the music player's output and the microphone input, and then pass the samples via some sort of IPC into your DSP process. JACK actually does this, but setting things up (e.g. ALSA->JACK bridge, if your music player and/or Skype does not natively support JACK as sound interface) does require some skill.
I guess it could work fairly well, but it probably requires quite some CPU. Especially XRUNS (audio buffer under- or overrun) can be really bad for your echo canceller, i.e. you might need realtime linux kernel patches. Implementation is not trivial, either. Also having stereo sound from your music player will reduce your cancellation success.
HTH
Generally when it comes to noise cancellation, it is due to 2 things in precedence order:
Hardware - either a MIC/headphone with noise cancellation feature or the internal sound card MIC that already built in that feature.
Software - a good example is Skype, AFAIK SKype allow you to fine tuning audio quality but unfortunately the tuning part so far only existed in Windows platform. Where in Linux, you can choose the option of "Allow Skype To Automatcally Adjust My Mixer Levels" checkbox at Preference > Sound Devices.
My understanding is when it come to noise cancellation, you have to deal with the sound car driver programming, currently there is couple of noises noted into future Ubuntu software release that carry the said feature, there is here mentioned.

HTML5 audio codecs, support for other formats besides OGG

I started tinkering around with HTML5 recently and am very interested in Audio tag. Though one thing immediately came to my attention, it appears that OGG is the only format supported in Firefox!
I understand that this is because MP3 and other codecs are proprietary software and require a license to use. But how is HTML5 Audio (and Video) going to catch on if you can only use OGG?? Like it or not the world is currently hooked to MP3 or Apple's AAC.
And to further hinder things it seems that Mozilla is all for only natively supporting OGG.
So I'm curious. Why can't Firefox, and other browsers, use System installed codecs for playing media? Why do they have to be installed into the browser, or depend on technologies like Flash? It just seems like bad design to me.
Perhaps, I'm just naive about this, but this whole codec war is just a nuisance. Can anyone point me to information, laws, and other information regarding why browsers can't use system installed codecs? I would also like to hear other users opinions about this as well. Thanks!
Edit In case this comes off as not being a programming question, I want to clarify that to me this issue directly affects web programmers. For example, in the case of audio support, do we have to use flash? or will these issues eventually be handled in HTML5. Where does it seem that things are going, technology-wise, in regards to this issue?
The <object> or <embed> tag could be used to reference any media, and allowed to transcend the browser for handling. The purpose of HTML5's media is to somewhat standardize a common encoding (lowest common denominator if you will) across platforms and have a browser-native player. The Ogg container and various encodings make perfect sense.

Resources