User Tools

Site Tools


dvb_native_ip

Differences

This shows you the differences between two versions of the page.

Link to this comparison view

Both sides previous revision Previous revision
Next revision
Previous revision
dvb_native_ip [2025/12/08 17:31]
jason
dvb_native_ip [2025/12/09 13:32] (current)
jason
Line 1: Line 1:
 ====== Native IP Implementation ====== ====== Native IP Implementation ======
- 
-THIS PAGE IS UNDER CONSTRUCTION 
  
 ===== Overview ===== ===== Overview =====
Line 7: Line 5:
 DTVKit’s Native IP Implementation is an additional module in DVBCore. The architecture of the NIP module is outlined in the diagram below: DTVKit’s Native IP Implementation is an additional module in DVBCore. The architecture of the NIP module is outlined in the diagram below:
  
-<IMAGE GOES HERE>+{{ :arch.png?600 |}}
  
 The NIP module is compatible with both GSE and MPE delivered NIP streams. The module performs MPE or GSE-Lite HEM decapsulation and FLUTE transport file extraction for NIP configuration files: NIF/SIF/DVB-I and Mutlicast Gateway Config. For chosen services the module then manages the retrieval and caching of the associated DASH MPD and AV segment data.  All data is cached in a RAM file store, which is managed by the NIP module the size of which is configurable. The NIP module is compatible with both GSE and MPE delivered NIP streams. The module performs MPE or GSE-Lite HEM decapsulation and FLUTE transport file extraction for NIP configuration files: NIF/SIF/DVB-I and Mutlicast Gateway Config. For chosen services the module then manages the retrieval and caching of the associated DASH MPD and AV segment data.  All data is cached in a RAM file store, which is managed by the NIP module the size of which is configurable.
Line 16: Line 14:
 The NIP module builds as part of DVBCore but to enable it the following options must be configured in the ‘example_setenv.sh’ The NIP module builds as part of DVBCore but to enable it the following options must be configured in the ‘example_setenv.sh’
  
-<IMAGE GOES HERE>+''# Set to 1 and export to enable DVB-NIP. When this is enabled, XML2 is also required 
 + 
 +export DTVKIT_INTEGRATE_DVBNIP=1'' 
 + 
 +''# Export the following values to compile in ADB functions to import/export the service database'' 
 +'' and specify the location of the libxml2 include directory'' 
 + 
 +''export DTVKIT_XML_SUPPORT=1'' 
 + 
 +''export DTVKIT_LIBXML2_INCLUDE_PATH=/usr/include/libxml2'' 
  
 In additional the following additional libraries are required in your build environment: In additional the following additional libraries are required in your build environment:
Line 38: Line 46:
      * Frequency (e.g. 964) + LNB (9750) = 10714      * Frequency (e.g. 964) + LNB (9750) = 10714
  
-The DTVKit Application does not support native playback of NIP services as these are typically DASH or HLS based. Instead, the NIP module includes a simple HTTP server that makes DVB NIP services available for playback using a web based or standard desktop player such as VLC.  The list of DVBNIP services is presented as the index page of the HTTP server together with all files in the RAM file store including the dash MPDs and associated AV segment data.+The DTVKit Application does not support native playback of NIP services as these are typically DASH or HLS based. Instead, the NIP module includes a simple HTTP server that makes DVB NIP services available for playback using a web based or standard desktop player such as VLC.  The list of DVBNIP services is presented as the index page of the HTTP server together with all files in the RAM file store including the dash MPDs and associated AV segment data. The MPD file of the desired service can be opened with VLC or similar DASH player to view playback.
  
-====== Operation ======+===== Operation =====
  
 Steps: Steps:
Line 58: Line 66:
     - If the file does not yet exist, then DVBNIP_GetFile() will initially return FALSE but will then search for the stream to subscribe to and then download it.     - If the file does not yet exist, then DVBNIP_GetFile() will initially return FALSE but will then search for the stream to subscribe to and then download it.
     - Subsequent calls to DVBNIP_GetFile will return TRUE and a FLUTE file read context, which can be read using FLUTE_FileRead().     - Subsequent calls to DVBNIP_GetFile will return TRUE and a FLUTE file read context, which can be read using FLUTE_FileRead().
 +
 +===== NIP Service States =====
 +By default, when a NIP service is identified, the NIP engine will wait for a request via DVBNIP_GetFile() before caching the related AV segments. To have faster initialisation & channel change experience it is possible to override this behaviour, so the AV data is cached sooner. NIP services can be in one of the following states:
 +  * E_DNSS_NOTFOUND - The service was not found
 +  * E_DNSS_NEW - The presence of services is known, but no manifest yet present.
 +  * E_DNSS_READY - The service is ready to start buffering, i.e. the manifest files are cached.
 +  * E_DNSS_BUFFERING - AV segments are downloaded and cached for the cache time, to the limit of reserved memory.
 +To control / query the status of the service, two API methods are available:
 +  * void DVBNIP_GetServiceStateByURI ()
 +  * BOOLEAN DVBNIP_SetServiceStateByURI ()
 +
 +These APIs can be used in conjunction with DVBNIP_ListServices () to cache services data at the desired level and offer a faster start/change time. Full details of the APIs are available in DVbCore’s API guide.
 +
 +===== RAM File Store =====
 +
 +All files in the filestore will be cleaned after MAX_AGE_CONTENT (currently 30 seconds), or when the total of all the files exceeds MAX_MEMORY_USAGE, (currently 100Mbytes), and of manifests, when these remain inactive for MAX_AGE_CONTENT seconds, then it removes the media segments, the manifests, and unsubscribes it from the FLUTE session.
 +
 +===== DVBCore NIP APIs =====
 +
 +Full details of DVBCore’s NIP related APIs and data structure is available in DVBCore’s reference manual documentation. The reference manual can be built using doxygen from the source code, or an online copy Is available [[https://www.dtvkit.org/wiki/DVBCore_24_10_0_api/html|https://www.dtvkit.org/wiki/DVBCore_24_10_0_api/html]].
 +
 +==== Platform APIs (STB_Xxxx Functions) ====
 +
 +
 +Additional platform APIs have been included to facilitate GSE tuning – the extra parameters are needed to tune to these carriers. 
 +  * STB_TuneSetGSEMode() - switches the driver layer into GSE mode, providing a callback function to call with full GSE packets.
 +  * STB_TuneSetGSEDataCallback() – callback function to call with full GSE packets.
 +
  
  
dvb_native_ip.1765215061.txt.gz · Last modified: 2025/12/08 17:31 by jason