2014-10-03, 13:49
I also like the idea of Chrome inside XBMC. Maybe loading Chrome Within XBMC. Cause sometimes I have to exit XBMC or minimize it to use Chrome and is kind of messy.
(2014-12-03, 17:23)Hedda Wrote: What about using Chromium Embedded Framework (CEF) as an embedded HTML-engine inside Kodi itself? It could then be used as framework for Kodi addons
http://en.wikipedia.org/wiki/Chromium_Em..._Framework
Chromium Embedded Framework (CEF) is an open source framework for embedding a web browser control based on Google Chrome. It is a convenient way to implement an HTML5 based GUI in a desktop application or to provide browser capabilities to an application, and provides the infrastructure developers need to quickly add HTML renderer and JavaScript to a C++ project It also comes with bindings for C, C++, Delphi, Java, .NET, and Python and runs on Linux, Mac OS X, and Windows.
CEF insulates the user from the underlying Chromium and Blink code complexity by offering production-quality stable APIs, release branches tracking specific Chromium releases, and binary distributions.
CEF supports: "Rendering Web content “off-screen” in applications that have their own custom drawing frameworks"
Maybe try it out it as a proof-of-concept? CEF is probably the most well maintained HTML engine for embedding right now? And hopefully it would not even have to be a full web browser if embedded into Kodi, at least not in the GUI experience sense as only simple remote control style navigation is needed, because is would primarily be used a framework for HTML5 addons and other HTML based addons inside Kodi.
Another approach could be making a HTML layout engine like CEF (or Chromium/WebKit/Blink) into a new video player for Kodi, similar to the DVDPlayer, and have that player be cross-platform.
DVDPlayer can today use libdvdnav/libdvdread/libdvdcss to playback DVD-Video movies with menus, and it can use libbluray/libaacs to playback Blu-ray Disc movies with menus.
Maybe an HTML layout engine like Chromium/WebKit/Blink could be made into its own player for XBMC, and that way "playback" Netflix HTML5 apps with menus.
At least then all the code would be contain within that one "Chromium/WebKit/Blink" (HTML5) player.
If that would be possible then it would also be simpler to one day replace that first HTML5 player with one made from a other HTML5 layout engine in the future.
Anyway, here is a good article about some benefits and what to consider when integrating Chromium Embedded Framework (CEF) as HTML5 rendering engine into applications like Kodi
http://coherent-labs.com/what-developers...eir-games/
Chromium Embedded Framework (CEF) is a free, open-source framework that is based on Chromium web browser and provides the infrastructure developers need to quickly add HTML renderer and JavaScript to a C++ project
https://code.google.com/p/chromiumembedded/
Chromium Embedded Framework (CEF) - Simple framework for embedding Chromium-based browsers in other applications
Introduction
The Chromium Embedded Framework (CEF) is a simple framework for embedding Chromium-based browsers in other applications. It is a BSD-licensed open source project founded by Marshall Greenblatt in 2008 and based on the Google Chromium project. Unlike the Chromium project itself, which focuses mainly on Google Chrome application development, CEF focuses on facilitating embedded browser use cases in third-party applications. CEF insulates the user from the underlying Chromium and Blink code complexity by offering production-quality stable APIs, release branches tracking specific Chromium releases, and binary distributions. Most features in CEF have default implementations that provide rich functionality while requiring little or no integration work from the user. There are currently over 100 million installed instances of CEF around the world embedded in products from a wide range of companies and industries. A partial list of companies and products using CEF is available on the CEF Wikipedia page. Some use cases for CEF include:CEF supports a wide range of programming languages and operating systems and can be easily integrated into both new and existing applications. It was designed from the ground up with both performance and ease of use in mind. The base framework includes C and C++ programming interfaces exposed via native libraries that insulate the host application from Chromium and Blink implementation details. It provides close integration between the browser and the host application including support for custom plugins, protocols, JavaScript objects and JavaScript extensions. The host application can optionally control resource loading, navigation, context menus, printing and more, while taking advantage of the same performance and HTML5 technologies available in the Google Chrome Web browser.
- Embedding an HTML5-compliant Web browser control in an existing native application.
- Creating a light-weight native “shell” application that hosts a user interface developed primarily using Web technologies.
- Rendering Web content “off-screen” in applications that have their own custom drawing frameworks.
- Acting as a host for automated testing of existing Web properties and applications.
Users new to CEF development should start by reading the Tutorial Wiki page for an overview of CEF usage and then proceed to the GeneralUsage Wiki page for a more in-depth discussion or architectural and usage issues. Complete API documentation is available here. CEF support and related discussion is available on the CEF Forum.
Numerous individuals and organizations contribute time and resources to support CEF development, but more involvement from the community is always welcome. This includes support for both the core CEF project and external projects that integrate CEF with additional programming languages and frameworks (see the "External Projects" section below). If you are interested in donating time to help with CEF development please see the "Helping Out" section below. If you are interested in donating money to support general CEF development and infrastructure efforts please visit the CEF Donations page.
Binary Distributions
Binary distributions, which include all files necessary to build a CEF-based application, are available on the Downloads page. Automated nightly builds, available from http://cefbuilds.com, include the newest changes but may not be fully tested. Binary distributions are stand-alone and do not require the download of CEF or Chromium source code. Symbol files for debugging binary distributions of libcef can also be downloaded from the above links.
Release notes for past and current CEF binary distributions are available here.
Source Distributions
The CEF project is an extension of the Chromium project. CEF maintains development and release branches that track Chromium branches. CEF source code can be downloaded, built and packaged manually or with automated tools. Visit the BranchesAndBuilding Wiki page for more information.
External Projects
The base CEF framework includes support for the C and C++ programming languages. Thanks to the hard work of external maintainers CEF can integrate with a number of other programming languages and frameworks. These external projects are not maintained by CEF so please contact the respective project maintainer if you have any questions or issues.
Regarding alternative methods of rendering CEF onto a frame buffer under Linux checkout these tips:
http://stackoverflow.com/questions/30326...eb-browser
http://stackoverflow.com/questions/64509...ramebuffer
https://groups.google.com/a/chromium.org...AEfjQEsemQ
http://comments.gmane.org/gmane.linux.em...scale/7691
(2014-12-09, 15:30)ironic_monkey Wrote: i did some preliminary tests using CEF. it's gonna be a biatch. it forks its processes from the main application. bam! multiple kodis. so you will have to run CEF in a separate process, this process manages the tabs and then you have to ipc back to kodi. not fun.
(2014-12-09, 15:49)Montellese Wrote:(2014-12-09, 15:30)ironic_monkey Wrote: i did some preliminary tests using CEF. it's gonna be a biatch. it forks its processes from the main application. bam! multiple kodis. so you will have to run CEF in a separate process, this process manages the tabs and then you have to ipc back to kodi. not fun.
And it might be a problem on iOS. IIRC jfcarroll once had the python stuff running in separate processes communicating with XBMC/Kodi through IPC but he gave up when he realized that iOS didn't support/allow forking processes.
(2014-12-09, 15:54)ironic_monkey Wrote: well then screw ios! /hides.
(2014-12-09, 18:13)RockerC Wrote: Anyway, are web browsers integration like CEF and HTML5 addons the way to take Kodi to "the next level" ? Other than addons, HTML5 engine could maybe also help port Kodi's GUI to new platforms?
(2014-12-09, 15:58)ironic_monkey Wrote: but you are doing it in mainline i assume. can't initialize an addon that early on..
and yes, the internal IPC is hidden, but as i said it looks like you need to fire up CEF in a separate binary, so that it doesn't fork off the main app. then you'd have to IPC from *that* binary to kodi on your own.