v3.0 Beta SDK available for download

Hi Is there going to be any support for a audio compression format when using the roAudioResource device :idea:

roAudioResource currently only supports .wav files.

–Kevin

The Java sample does not run on a Roku. It runs on an Android phone and is a remote application example.

The applications you can build that run on the Roku are all developed using Brightscript.

–Kevin.

“RokuKevin” wrote:
The Java sample does not run on a Roku. It runs on an Android phone and is a remote application example.

The applications you can build that run on the Roku are all developed using Brightscript.

–Kevin.

Is there a Reciever.java file that needs to be part of the sample code?

I have had a few problems with using Brightscript Beta 3.0 build 2207, which could be just finger trouble on my part. Theses are;

  1. After using “roUrlTransfer” the “roAudioPlayer” does not seem to work!
  2. If the “roTransfer” fails, when using Microsoft IIS then you have to restart IIS.
  3. Then mixing “roScreen” objects and the Roku built-in screen component types. The built-in screen components stop working!

I hope this information is useful :?

“mixe” wrote:
I have had a few problems with using Brightscript Beta 3.0 build 2207, which could be just finger trouble on my part. Theses are;

  1. After using “roUrlTransfer” the “roAudioPlayer” does not seem to work!
  2. If the “roTransfer” fails, when using Microsoft IIS then you have to restart IIS.
  3. Then mixing “roScreen” objects and the Roku built-in screen component types. The built-in screen components stop working!

I hope this information is useful :?
I’ve never seen #1 or #2, and I’ve used all three of those (roUrlTransfer, roAudioPlayer, and IIS) in conjunction with each in a number of my channels.

#3 is actually documented in the BrightScript Reference:

“BrightScriptReferenceManual - 11.1” wrote:
Once an roScreen is created, the display stack enters “Game Mode”, and other screen components documented in the Component Reference cannot be used. Other screen components cannot be intermixed with roScreens as the roScreen display stack is maintained independently from the main screen component display stack. When the final roScreen component is closed, other screen components can be used again.

Is there any ETA on when 3.0 will be released?

Hi,

I just downloaded the 3.0 SDK. And I have a few questions/issues:

  1. The Android remote control client does not build. There is some class called Receiver() which is not found. I assume that this is a file as part of the example thats not there in the zip? I’m using Android 2.2
  2. Is there any plans to provide a Bluetooth API for Roku2?

Thanks,
Shreesh

I’d like to make a request/suggestion: before the 3.0 SDK gets a full release, could some of the example sources be updated/modified, too?

I use the videoplayer example, so I can’t speak to the other examples, but from what I understand, the videoplayer example has things in the code/xml that have been obsolete since v 2.6.

I realize this wouldn’t be the thread for doing that, but it would be nice to see some sticky threads dedicated to cleaning up, fixing, and improving upon some of the example sources.

Tested on Roku 2 HD using firmware v4.1

BUGS in v3 SDK

  • SetDisplayMode() IS a member of ifSpringboardScreen interface but is not documented

  • SetDisplayMode() IS a member of ifPosterScreen interface but is not documented

  • SetTitle() is NOT a member of ifSearchScreen interface but is documented as such. If used it will result in the error below.

    
    Member function not found in BrightScript Component or interface.
    
    
  • roPosterScreen.SetListStyle(“flat-episodic”) does not display the posters for any item not in focus even when not using episode numbers.

  • Using roPosterScreen.SetListStyle(“flat-episodic-16x9”) with roPosterScreen.SetListDisplayMode(“scale-to-fit”) successfully displays the non-focused posters but the scale-to-fit setting is only applied to the in-focus poster. The posters to the side of the in-focus poster do not preserve the original aspect ratio.

  • It is not possible to use Seek() on a mp3 file using roAudioPlayer or roVideoScreen with one exception (see last section of code below)

Features that would greatly improve audio support

  • Add SetPositionNotificationPeriod() to ifAudioPlayer interface

  • Add isPlaybackPosition() event type to roAudioPlayerEvent

  • Use PlayStart Meta-Data attribute to resume audio playback from a specific position

  • Use SDPosterUrl and HDPosterUrl meta-data attributes to set a background image on roVideoScreens

  • Add SetBGDisplayMode() method to roVideoScreen to determine whether background image should be full screen or scale-to-fit

Resuming playback for audio files
I’ve only tested these issues using mp3 files. The main stream that I use for testing is hosted on archive.org. I initially tried to implement an audio player that provided a save/resume feature using a springboard screen and roAudioPlayer. Unfortunately since there isn’t a playback notification event there was no way to retrieve the current position. The only way I was able to determine the audio playback position was to use a roTimespan object in combination with the wait() function. The code below is a much abbreviated example of how this worked.


	currentpos = 0
	totalLength = 3600
	isPlaying = false
	timer = CreateObject("roTimespan")
	while true
		msg = wait(1000, port)
		if type(msg) = "roAudioPlayerEvent" then
			if msg.isStatusMessage() then
				message = msg.getMessage()
				if message = "start of play" then
					timer.Mark() 'start the timer
					isPlaying = true
				endif
			elseif msg.isPaused()
				currentpos = currentpos + timer.TotalSeconds()
				isPlaying = false
			elseif msg.isResumed()
				timer.Mark() 'restart the timer
				isPlaying = true
			endif
		elseif isPlaying then
			springboard.SetProgressIndicator(currentpos + timer.TotalSeconds(), totalLength)
		endif
	end while

I was able to keep track of the current playback position and update the progress indicator on the springboard screen but there was no way to resume playback at a specific position. Calling Pause() and then Resume() work just fine, but if the playback position is saved to the registry and you want to return to that position at a later time then there was simply no way to accomplish it. The PlayStart and StreamStartTimeOffset meta-data attributes have no effect on a mp3 file (possibly all audio files but I haven’t tested wma). Calling the Seek() method on a roAudioPlayer prior to or after calling Play() had no effect. As far as I know it is literally impossible to resume playback at a specific position using roAudioPlayer.

My last option was to switch to a roVideoScreen just to play mp3 files. Unfortunately I discovered some of the same issues with roVideoScreen. While it did provide the playback position notification and eliminated the need to use roTimespan/wait I still couldn’t resume at a specific position. Calling Seek() prior to or after calling Show() had no effect, calling Seek() from the isStreamStarted() notification had no effect, and the PlayStart and StreamStartTimeOffset meta-data attributes were ignored for mp3 files. The ONLY way I was able to resume playback at a specific position was with the code below.


	resume = 100
	currentpos = 0
	isResumed = false
	while true
		msg = wait(0, port)
		if type(msg) = "roVideoScreenEvent" then
			if msg.isPlaybackPosition() then
				currentpos = msg.GetIndex()
				print "playback position: "; currentpos
				if not isResumed and resume > 0 then
					isResumed = true
					player.Seek((resume + 1) * 1000)
				endif
			endif
		endif
	end while

It really shouldn’t be that difficult to save/resume an audio playback position. Since it CAN be accomplished using roVideoScreen I think it would be incredibly useful to have the option to set a default background image on that screen. If a roVideoScreen is being used to play an audio file then it will only display a black background along with the progress bar. I know I could use roImageCanvas to display an image on top of the roVideoScreen but I would then lose the user controls (play, pause, etc). Please add the option to use the SDPosterUrl and HDPosterUrl meta-data to display a background image on roVideoScreens. I think a new method should also be added to control the scaling/aspect ratio for the bg image (e.g., SetBGDisplayMode(“scale-to-fit”).

There was a discussion of seeking into MP3s and why it doesn’t work (isn’t supported) here:
viewtopic.php?f=34&t=30673&p=233555

-JT

There was a discussion of seeking into MP3s and why it doesn’t work (isn’t supported) here:
viewtopic.php?f=34&t=30673&p=233555
Thanks for posting the link. Even if seeking isn’t supported in roAudioPlayer there are still a few features that could be added to improve the audio support. I think a playback notification event should be a priority. The springboard screens currently provide a progress indicator if the content type is set to “audio” but there’s no way to retrieve the current playback position making it rather pointless to display a progress indicator.

Yeah