Giter Club home page Giter Club logo

rt-5gms-application's People

Contributors

dsilhavy avatar gcris-dolby avatar jordijoangimenez avatar kurtkrauss avatar rjb1000 avatar

Stargazers

 avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

rt-5gms-application's Issues

DVB-I Service using 5G Media Streaming - Reference service list

Background

TR 103972 v1.1.1 Section 6.3.3.2 describes the service discovery procedure that a DVB-I client uses to discover the set of available DVB-I services. DVB-I services are described in a DVB-I service list.

Feature Description

For development and demonstration purposes, 5G-MAG should host a reference DVB-I Service List (for instance a Linode instance). The reference DVB-I Service List can contain new parameters related to 5G Media Streaming such as the 5GMS AF host address and the provisioning session ID (see Section 6.3.4).

Feature: Display current video bit rate in User Interface

Feature description

As a demonstrator of the 5GMS-Aware Application, I would like to know which video representation is currently playing back.

The application should display the bit rate (and, if available, the representation ID string) of the currently selected video representation as part of the User Interface. This would ideally be overlaid on a corner of the rendered video window, or else somewhere nearby.

Failed in compiling fivegmag_5GMSdAwareApplication

Hi 5G-MAG groups,

I encountered a failure when trying to compile the fivegmag_5GMSdAwareApplication on development branch. From the log shown as follows, it seems like it missed two packages. However, I haven't found any repo which provides the a5gmscommonlibrary and a5gmsmediastreamhandler.

Do you have any idea about this? Any input is appreciated.

╰─➤  ./gradlew assemble
> Task :app:checkDebugAarMetadata FAILED

FAILURE: Build failed with an exception.

* What went wrong:
Execution failed for task ':app:checkDebugAarMetadata'.
> Could not resolve all files for configuration ':app:debugRuntimeClasspath'.
   > Could not find com.fivegmag:a5gmscommonlibrary:1.0.0.
     Searched in the following locations:
       - file:/home/z.cheng/.m2/repository/com/fivegmag/a5gmscommonlibrary/1.0.0/a5gmscommonlibrary-1.0.0.pom
       - https://dl.google.com/dl/android/maven2/com/fivegmag/a5gmscommonlibrary/1.0.0/a5gmscommonlibrary-1.0.0.pom
       - https://repo.maven.apache.org/maven2/com/fivegmag/a5gmscommonlibrary/1.0.0/a5gmscommonlibrary-1.0.0.pom
     Required by:
         project :app
   > Could not find com.fivegmag:a5gmsmediastreamhandler:1.0.0.
     Searched in the following locations:
       - file:/home/z.cheng/.m2/repository/com/fivegmag/a5gmsmediastreamhandler/1.0.0/a5gmsmediastreamhandler-1.0.0.pom
       - https://dl.google.com/dl/android/maven2/com/fivegmag/a5gmsmediastreamhandler/1.0.0/a5gmsmediastreamhandler-1.0.0.pom
       - https://repo.maven.apache.org/maven2/com/fivegmag/a5gmsmediastreamhandler/1.0.0/a5gmsmediastreamhandler-1.0.0.pom
     Required by:
         project :app

* Try:
> Run with --stacktrace option to get the stack trace.
> Run with --info or --debug option to get more log output.
> Run with --scan to get full insights.

* Get more help at https://help.gradle.org

BUILD FAILED in 2s
2 actionable tasks: 1 executed, 1 up-to-date

License and copyright notes

Description

As we are planning to provide the APK of the 5GMSd Aware Application for download via Linode or Github we would like to add the license and the copyright notes to the app. This can be done by adding a button for each of the items and showing the information after the user clicks on the button.

5GMSd Aware Application - DVB-I Service List Acquisition

Background

TR 103972 v1.1.1 Section 6.3.3.2 describes the service discovery procedure that a DVB-I client uses to discover the set of available DVB-I services. This realizes the M8d service announcement procedure in the context of 5G Media Streaming.

Each service instance in the DVB-I Service List plays the role here of a Service Announcement at reference point M8d. As a consequence, the DVB-I Service List document needs to convey at minimum the baseline Service Access Information parameters, namely the available 5GMSd AF host address(es) and the Provisioning Session identifier of the 5GMSd downlink streaming service corresponding to the DVB-I service.

NOTE: The annotation of a DVB-I service instance with 5GMS baseline Service Access Information parameters
is identified as a gap in clause 6.3.4.

Feature Description

The 5GMSd Aware Application shall parse the DVB-I Service List and provide a list of the available services for selection by the user. This is similar to what is being done today using a JSON-based format (see Additional Context below). It is up to the implementation how to visualize the list of available services. Probably a dropdown menu is not optimal. Moreover, there should be an easy way to switch between DVB-I and JSON based service descriptions, both provided via interface M8.

Note: In this case we are assuming that the DVB-I client is integrated into the 5GMSd-Aware Application. It would also be possible that a dedicated DVB-I client launches the 5GMSd Aware Application once a service has been selected

Additional Context

The current implementation of the 5GMSd Aware Application uses a JSON based format at reference point M8:

{
  "m5BaseUrl": "http://10.147.67.179:3003/3gpp-m5/v2/",
  "serviceList": [
    {
      "provisioningSessionId": "3",
      "name": "BBC",
      "entryPoints": [
        {
          "locator": "https://rdmedia.bbc.co.uk/testcard/vod/manifests/avc-full.mpd",
          "contentType": "application/dash+xml",
          "profiles": [
            "urn:mpeg:dash:profile:isoff-live:2011"
          ]
        }
      ]
    },
    {
      "provisioningSessionId": "3",
      "name": "AWS",
      "entryPoints": [
        {
          "locator": "https://d24rwxnt7vw9qb.cloudfront.net/v1/dash/e6d234965645b411ad572802b6c9d5a10799c9c1/All_Reference_Streams/4577dca5f8a44756875ab5cc913cd1f1/index.mpd",
          "contentType": "application/dash+xml",
          "profiles": [
            "urn:mpeg:dash:profile:isoff-live:2011"
          ]
        }
      ]
    }
  ]
}

M8 Reference point for Service Access Information - Media Entry Point

Feature description

The 5GMS-Aware Application needs information from the 5GMS Application Provider in order to determine the Media Entry Point (MPD, master .m3u8) hosted on the 5GMS AS. This is provided by a proprietary protocol between the 5GMS Application Provider and the 5GMS-Aware Application using the interface at a reference point M8. The information conveyed via the interface at M8 is dependent on how the Application Provider wishes to manage the media assets. It is typically generated by a Content Management System (CMS) as part of a data feed that populates a content guide user experience.

The information provided via M8 can be used by the Application Provider in two distinct ways:

  1. A Provisioning Session for a single VoD catalogue item or linear stream
    • The M8 information contains only the Provisioning Session Id for a single content item or stream.
    • The Content Hosting Configuration was created with distributionConfiguration.entryPoint objects, with relative path details, which are then provided as absolute entry points in the M5 Service Access Information.
    • The application initiates playback via the Media Session Handler (reference point M6) using the Provisioning Session Id.
      • The Media Session Handler requests the Service Access Information via reference point M5, selects an entry point suitable for the Media Stream Handler/Media Player and tells the Media Stream Handler/Media Player to start playback (via reference point M7).
  2. A Provisioning Session intended to be used for multiple different VoD catalogue items or linear streams
    • The M8 information contains the Provisioning Session Id and entryPoints for a piece of media
    • The Application Provider set up a Provisioning Session for a common top-level media entry point prefix, but there are no distributionConfiguration.entryPoint objects in the ContentHostingConfiguration. Entry points for individual VoD catalogue items or linear streams are provided via M8 and there may be multiple different media all using the same Provisioning Session.
    • The application initiates media session handling (including reporting) by providing the Provisioning Session Id to the Media Session Handler via reference point M6 and may optionally pass the selected entry point URL to the Media Session Handler for it to initiate media playback in the Media Stream Handler (Media Player).
    • Or the application may directly initiate media playback by passing the selected entry point URL to the Media Stream Handler (Media Player) via reference point M7.

The information passed at interface at reference point M8 may also describe a mixture of these two approaches, with some media items having their own Provisioning Session and some sharing a common Provisioning Session.

For the use in the 5G-MAG examples we will come up with our own format for the messages at M8.

Single media for a Provisioning Session

When a Provisioning Session is just for a single piece of media (possibly in multiple formats such as DASH and HLS) then the entry points for the media can be provided to the 5GMS Application Function via the ContentHostingConfiguration, for example these two ContentHostingConfigurations (which for the sake of this example the Application Function will be attaching to Provisioning Sessions 2 & 3 respectively):

{
	"name": "AMP Demo Stream: Big Buck Bunny",
	"ingestConfiguration": {
		"pull": true,
		"protocol": "urn:3gpp:5gms:content-protocol:http-pull-ingest",
		"baseURL": "http://amssamples.streaming.mediaservices.windows.net/622b189f-ec39-43f2-93a2-201ac4e31ce1/BigBuckBunny.ism/"
	},
	"distributionConfigurations": [
		{
			"domainNameAlias": "rt.5g-mag.com",
			"entryPoint": {
				"relativePath": "manifest(format=mpd-time-csf)",
				"contentType": "application/dash+xml",
				"profiles": ["urn:mpeg:dash:profile:isoff-live:2011"]
			}
		},
		{
			"domainNameAlias": "rt.5g-mag.com",
                        "entryPoint": {
                                "relativePath": "manifest(format=m3u8-aapl-v3)",
                                "contentType": "application/vnd.apple.mpegurl"
                        }
		}
	]
}

...and...

{
	"name": "AMP Demo Stream: Caminandes: Llama Drama",
	"ingestConfiguration": {
		"pull": true,
		"protocol": "urn:3gpp:5gms:content-protocol:http-pull-ingest",
		"baseURL": "http://amssamples.streaming.mediaservices.windows.net/634cd01c-6822-4630-8444-8dd6279f94c6/CaminandesLlamaDrama4K.ism/"
	},
	"distributionConfigurations": [
		{
			"domainNameAlias": "rt.5g-mag.com",
			"entryPoint": {
				"relativePath": "manifest(format=mpd-time-csf)",
				"contentType": "application/dash+xml",
				"profiles": ["urn:mpeg:dash:profile:isoff-live:2011"]
			}
		},
		{
			"domainNameAlias": "rt.5g-mag.com",
                        "entryPoint": {
                                "relativePath": "manifest(format=m3u8-aapl-v3)",
                                "contentType": "application/vnd.apple.mpegurl"
                        }
		}
	]
}

This will then allow the 5GMS AF to provide Service Access Information for these two streams via the interface at reference point M5.

For the two examples these would be:

http://rt.5g-mag.com:7778/3gpp-m5/v2/service-access-information/2

{
    "provisioningSessionId": "2",
    "provisioningSessionType": "DOWNLINK",
    "streamingAccess":	{
        "entryPoints":	[
	    {
	        "locator": "http://rt.5g-mag.com/m4d/provisioning-session-2/manifest(format=mpd-time-csf)",
	        "contentType": "application/dash+xml",
	        "profiles": ["urn:mpeg:dash:profile:isoff-live:2011"]
	    },
	    {
		"locator": "http://rt.5g-mag.com/m4d/provisioning-session-2/manifest(format=m3u8-aapl-v3)",
                "contentType": "application/vnd.apple.mpegurl"
	    }
	]
    }
}

...and...
http://rt.5g-mag.com:7778/3gpp-m5/v2/service-access-information/3

{
    "provisioningSessionId": "3",
    "provisioningSessionType": "DOWNLINK",
    "streamingAccess":	{
        "entryPoints":	[
	    {
	        "locator": "http://rt.5g-mag.com/m4d/provisioning-session-3/manifest(format=mpd-time-csf)",
	        "contentType": "application/dash+xml",
	        "profiles": ["urn:mpeg:dash:profile:isoff-live:2011"]
	    },
	    {
		"locator": "http://rt.5g-mag.com/m4d/provisioning-session-3/manifest(format=m3u8-aapl-v3)",
                "contentType": "application/vnd.apple.mpegurl"
	    }
	]
    }
}

Because the entryPoints are surfaced in the ServiceAccessInformation, which is retrieved by the Media Session Handler using the interface at reference point M5, it is not necessary to provide these entry points over M8.

Therefore the M8 information could look like:

{
	"m5BaseUrl": "http://rt.5g-mag.com:7778/3gpp-m5/v2/",
	"serviceList": [
		{
			"provisioningSessionId": "2",
			"name": "AMP Demo Stream: Big Buck Bunny"
		},
		{
			"provisioningSessionId": "3",
			"name": "AMP Demo Stream: Caminandes: Llama Drama"
		}
	]
}

This allows the 5GMS-Aware Application to show the available stream names to the user, allowing them to select one for playback. Once selected the 5GMS-Aware Application will then ask the Media Session Handler to start media session handling for the selected Provisioning Session Id and start playback.

In this sequence, the Media Session Handler selects a suitable entryPoint for the Media Stream Handler/Media Player and to ask it to play back that stream. The 5GMS-Aware Application could supply a preferred MIME content type and/or set of profiles as additional parameters to help the Media Session Handler choose a suitable Media Entry Point from those advertised in the Service Access Information.

Multiple media for a Provisioning Session

Instead of establishing each piece of media as its own Provisioning Session (and for a VoD service there may be a few hundred thousand pieces of media) it is also possible in the framework for the Application Provider to set up a single Provisioning Session with a Content Hosting Configuration pointing to a top level URL path that can be used for multiple different media located underneath that top level. In this case the Content Hosting Configuration points to a media service rather than an individual piece of media. In such cases, the Content Hosting Configuration (and hence the Service Access Information) does not describe specific Media Entry Points.

For example (for the sake of this example we will attach this to Provisioning Session 1 in the Application Function):

{
	"name": "Azure Media Player Sample Streams",
	"ingestConfiguration": {
		"pull": true,
		"protocol": "urn:3gpp:5gms:content-protocol:http-pull-ingest",
		"baseURL": "http://amssamples.streaming.mediaservices.windows.net/"
	},
	"distributionConfigurations": [
		{
			"domainNameAlias": "rt.5g-mag.com"
		}
	]
}

The corresponding Service Access Information, provided by the 5GMS Application Function via the interface at reference point M5 would look like:

{
      "provisioningSessionId": "1",
      "provisioningSessionType": "DOWNLINK"
}

(The Service Access Information may also contain properties such as clientConsumptionReportingConfiguration for consumption reporting of the media that is played back, so is still useful to the Media Session Handler)

Now in this case the M8 information needs to provide the entry points for each piece of media the 5GMS Aware Application will make available, therefore the M8 information could look like:

{
	"m5BaseUrl": "http://rt.5g-mag.com:7778/3gpp-m5/v2/",
	"serviceList": [
		{
			"provisioningSessionId": "1",
			"name": "Big Buck Bunny",
			"entryPoints": [
				{
					"locator": "http://rt.5g-mag.com/622b189f-ec39-43f2-93a2-201ac4e31ce1/BigBuckBunny.ism/manifest(format=mpd-time-csf)",
					"contentType": "application/dash+xml",
					"profiles": ["urn:mpeg:dash:profile:isoff-live:2011"]
				},
				{
					"locator": "http://rt.5g-mag.com/622b189f-ec39-43f2-93a2-201ac4e31ce1/BigBuckBunny.ism/manifest(format=m3u8-aapl-v3)",
					"contentType": "application/vnd.apple.mpegurl"
				}
			]
		},
		{
			"provisioningSessionId": "1",
			"name": "Caminandes: Llama Drama",
			"entryPoints": [
				{
                                        "locator": "http://rt.5g-mag.com/634cd01c-6822-4630-8444-8dd6279f94c6/CaminandesLlamaDrama4K.ism/manifest(format=mpd-time-csf)",
                                        "contentType": "application/dash+xml",
                                        "profiles": ["urn:mpeg:dash:profile:isoff-live:2011"]
                                },
                                {
                                        "locator": "http://rt.5g-mag.com/634cd01c-6822-4630-8444-8dd6279f94c6/CaminandesLlamaDrama4K.ism/manifest(format=m3u8-aapl-v3)",
                                        "contentType": "application/vnd.apple.mpegurl"
                                }
                        ]
		}
	]
}

This M8 information contains multiple (in this case 2) media items all using the same Provisioning Session ID.

The 5GMS-Aware Application will present the media items to the user in much the same way it did for the Single media for a Provisioning Session case. When the user selects the media item for playback the 5GMS-Aware Application initialises the Media Session Handler with the Provisioning Session ID for the media. However, in this case it is up to the 5GMS-Aware Application to select a suitable Media Entry Point from the list provided over M8 and to request, via the Media Session Handler API at reference point M6 or directly via the Media Stream Handling API at reference point M7, that the Media Stream Handler (Media Player) begins playback.

Relevant specifications and corresponding sections

26.501 - 5G Media Streaming (5GMS); General description and architecture (Release 17)
26.512 - 5G Media Streaming (5GMS); Protocols (Release 17)

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.