Roku Developer Program

Developers and content creators—a complete solution for growing an audience directly.
cancel
Showing results for 
Search instead for 
Did you mean: 
BradC
Level 7

7 breaks roaudioresource?

so I noticed the sound in one of my channels stopped working today, I checked and sure enough the player had just gotten updated to 7.


I didn't see anything here on the forum, is this a known issue with the update to 7?
♦MiniGolf♦HangMan♦Brain Puck♦Retro Tennis♦BORK♦FLIP♦Pathogen♦Pathogen 2♦Shut the Box♦Birdie♦Logic♦Dots♦Pool♦küglo♦Bubble Wrap♦Trivia Channel♦Mancala♦Air Hockey♦Weather♦CAMERA♦Your Photos Screensaver♦Desert Beauty Screensaver♦Wild Lakes Screensaver♦
0 Kudos
8 Replies
renojim
Level 8

Re: 7 breaks roaudioresource?

It's certainly not universal. I haven't seen any problems with any of my channels. Maybe it's specific to a certain format?

-JT
0 Kudos
Komag
Level 9

Re: 7 breaks roaudioresource?

But the sound in your other channels still works? Any differences in the sounds, or in the methods they are called?
0 Kudos
Roku Employee
Roku Employee

Re: 7 breaks roaudioresource?

What are the bitrates and bit-depth of the audio files in question, what model of device, and which channel is affected?

- Joel
0 Kudos
EnTerr
Level 8

Re: 7 breaks roaudioresource?

Just noticed in rOS7.0.9021 a whole lot of audio debug info is dumped to console when starting my dev:
------ Running dev '<censored>' main ------
Starting.
[93886428] SND ENTER: snd_pcm_open: mode 0
[93886428] SND ENTER: snd_card_get_index
[93886431] SND ENTER: snd_pcm_hw_params_any
[93886431] SND ENTER: snd_pcm_hw_refine
[93886432] SND Info: enter snd_pcm_hw_params_dump
ACCESS: ALL
FORMAT: ALL
SUBFORMAT: ALL
SAMPLE_BITS: ALL
FRAME_BITS: ALL
CHANNELS: ALL
RATE: ALL
PERIOD_TIME: ALL
PERIOD_SIZE: ALL
PERIOD_BYTES: ALL
PERIODS: ALL
BUFFER_TIME: ALL
BUFFER_SIZE: ALL
BUFFER_BYTES: ALL
TICK_TIME: ALL
[93886433] SND Info: exit snd_pcm_hw_params_dump
[93886434] SND Info: enter _snd_pcm_native_hw_refine
Rule 0 [0x47f98c00]: FORMAT = 1ffffff -> 1b0003f
Rule 1 [0x47f98b38]: SAMPLE_BITS = [8 16] -> [8 16]
Rule 2 [0x47f9939c]: SAMPLE_BITS = [8 16] -> [8 16]
Rule 3 [0x47f991ec]: FRAME_BITS = [0 4294967295] -> [8 32]
Rule 4 [0x47f99870]: FRAME_BITS = [8 32] -> [8 32]
Rule 5 [0x47f99870]: FRAME_BITS = [8 32] -> [8 32]
Rule 6 [0x47f9939c]: CHANNELS = [1 2] -> [1 2]
Rule 7 [0x47f99870]: RATE = [8000 96000] -> [8000 96000]
Rule 8 [0x47f99870]: RATE = [8000 96000] -> [8000 96000]
Rule 9 [0x47f987ec]: BUFFER_SIZE = [512 6144] -> [512 6144]
Rule 10 [0x47f9939c]: PERIODS = [0 4294967295] -> (0 24]
Rule 11 [0x47f9939c]: PERIOD_SIZE = [256 2048] -> [256 2048]
Rule 12 [0x47f99870]: PERIOD_SIZE = [256 2048] -> [256 2048]
Rule 13 [0x47f996a4]: PERIOD_SIZE = [256 2048] -> [256 2048]
Rule 14 [0x47f991ec]: BUFFER_SIZE = [512 6144] -> [512 6144]
Rule 15 [0x47f99870]: BUFFER_SIZE = [512 6144] -> [512 6144]
Rule 16 [0x47f996a4]: BUFFER_SIZE = [512 6144] -> [512 6144]
Rule 17 [0x47f996a4]: PERIOD_BYTES = [0 4294967295] -> [256 8192]
Rule 18 [0x47f996a4]: BUFFER_BYTES = [0 4294967295] -> [512 24576]
Rule 19 [0x47f99870]: PERIOD_TIME = [0 4294967295] -> (2666 256000]
Rule 20 [0x47f99870]: BUFFER_TIME = [0 4294967295] -> (5333 768000]
Rule 2 [0x47f9939c]: SAMPLE_BITS = [8 16] -> [8 16]
Rule 4 [0x47f99870]: FRAME_BITS = [8 32] -> [8 32]
Rule 5 [0x47f99870]: FRAME_BITS = [8 32] -> [8 32]
Rule 7 [0x47f99870]: RATE = [8000 96000] -> [8000 96000]
Rule 8 [0x47f99870]: RATE = [8000 96000] -> [8000 96000]
Rule 12 [0x47f99870]: PERIOD_SIZE = [256 2048] -> [256 2048]
Rule 13 [0x47f996a4]: PERIOD_SIZE = [256 2048] -> [256 2048]
Rule 15 [0x47f99870]: BUFFER_SIZE = [512 6144] -> [512 6144]
Rule 16 [0x47f996a4]: BUFFER_SIZE = [512 6144] -> [512 6144]
[93886440] SND EXIT: _snd_pcm_native_hw_refine
[93886440] SND ENTER: snd_pcm_hw_params_set_access: masks 0x1f, acc 0x0
[93886440] SND Info: _snd_pcm_hw_param_set(948): var 0 val 3
[93886440] SND Info: enter hw_param_set: var 0
[93886440] SND ENTER: snd_pcm_hw_refine
[93886441] SND Info: enter snd_pcm_hw_params_dump
ACCESS: RW_INTERLEAVED
FORMAT: S8 U8 S16_LE S16_BE U16_LE U16_BE MU_LAW A_LAW MPEG GSM
SUBFORMAT: STD
SAMPLE_BITS: [8 16]
FRAME_BITS: [8 32]
CHANNELS: [1 2]
RATE: [8000 96000]
PERIOD_TIME: (2666 256000]
PERIOD_SIZE: [256 2048]
PERIOD_BYTES: [256 8192]
PERIODS: (0 24]
BUFFER_TIME: (5333 768000]
BUFFER_SIZE: [512 6144]
BUFFER_BYTES: [512 24576]
TICK_TIME: ALL
[93886443] SND Info: exit snd_pcm_hw_params_dump
[93886443] SND Info: enter _snd_pcm_native_hw_refine
[93886443] SND EXIT: _snd_pcm_native_hw_refine
[93886443] SND ENTER: snd_pcm_hw_params_set_format
[93886443] SND Info: _snd_pcm_hw_param_set(948): var 1 val 2
[93886443] SND Info: enter hw_param_set: var 1
[93886443] SND ENTER: snd_pcm_hw_refine
[93886443] SND Info: enter snd_pcm_hw_params_dump
ACCESS: RW_INTERLEAVED
FORMAT: S16_LE
SUBFORMAT: STD
SAMPLE_BITS: [8 16]
FRAME_BITS: [8 32]
CHANNELS: [1 2]
RATE: [8000 96000]
PERIOD_TIME: (2666 256000]
PERIOD_SIZE: [256 2048]
PERIOD_BYTES: [256 8192]
PERIODS: (0 24]
BUFFER_TIME: (5333 768000]
BUFFER_SIZE: [512 6144]
BUFFER_BYTES: [512 24576]
TICK_TIME: ALL
[93886445] SND Info: exit snd_pcm_hw_params_dump
[93886445] SND Info: enter _snd_pcm_native_hw_refine
Rule 1 [0x47f98b38]: SAMPLE_BITS = [8 16] -> [16 16]
Rule 3 [0x47f991ec]: FRAME_BITS = [8 32] -> [16 32]
Rule 6 [0x47f9939c]: CHANNELS = [1 2] -> [1 2]
Rule 12 [0x47f99870]: PERIOD_SIZE = [256 2048] -> [256 2048]
Rule 15 [0x47f99870]: BUFFER_SIZE = [512 6144] -> [512 6144]
Rule 17 [0x47f996a4]: PERIOD_BYTES = [256 8192] -> [512 8192]
Rule 18 [0x47f996a4]: BUFFER_BYTES = [512 24576] -> [1024 24576]
Rule 0 [0x47f98c00]: FORMAT = 4 -> 4
Rule 2 [0x47f9939c]: SAMPLE_BITS = [16 16] -> [16 16]
Rule 4 [0x47f99870]: FRAME_BITS = [16 32] -> [16 32]
Rule 5 [0x47f99870]: FRAME_BITS = [16 32] -> [16 32]
Rule 12 [0x47f99870]: PERIOD_SIZE = [256 2048] -> [256 2048]
Rule 15 [0x47f99870]: BUFFER_SIZE = [512 6144] -> [512 6144]
[93886447] SND EXIT: _snd_pcm_native_hw_refine
[93886447] SND ENTER: snd_pcm_hw_params_set_channels
[93886447] SND Info: _snd_pcm_hw_param_set(948): var 10 val 1
[93886447] SND Info: enter hw_param_set: var 10
[93886447] SND Info: enter snd_interval_refine_set
[93886447] SND ENTER: snd_pcm_hw_refine
[93886447] SND Info: enter snd_pcm_hw_params_dump
ACCESS: RW_INTERLEAVED
FORMAT: S16_LE
SUBFORMAT: STD
SAMPLE_BITS: 16
FRAME_BITS: [16 32]
CHANNELS: 1
RATE: [8000 96000]
PERIOD_TIME: (2666 256000]
PERIOD_SIZE: [256 2048]
PERIOD_BYTES: [512 8192]
PERIODS: (0 24]
BUFFER_TIME: (5333 768000]
BUFFER_SIZE: [512 6144]
BUFFER_BYTES: [1024 24576]
TICK_TIME: ALL
[93886447] SND Info: exit snd_pcm_hw_params_dump
[93886447] SND Info: enter _snd_pcm_native_hw_refine
Rule 2 [0x47f9939c]: SAMPLE_BITS = [16 16] -> [16 16]
Rule 3 [0x47f991ec]: FRAME_BITS = [16 32] -> [16 16]
Rule 6 [0x47f9939c]: CHANNELS = [1 1] -> [1 1]
Rule 12 [0x47f99870]: PERIOD_SIZE = [256 2048] -> [256 2048]
Rule 15 [0x47f99870]: BUFFER_SIZE = [512 6144] -> [512 6144]
Rule 17 [0x47f996a4]: PERIOD_BYTES = [512 8192] -> [512 4096]
Rule 18 [0x47f996a4]: BUFFER_BYTES = [1024 24576] -> [1024 12288]
Rule 2 [0x47f9939c]: SAMPLE_BITS = [16 16] -> [16 16]
Rule 4 [0x47f99870]: FRAME_BITS = [16 16] -> [16 16]
Rule 5 [0x47f99870]: FRAME_BITS = [16 16] -> [16 16]
Rule 12 [0x47f99870]: PERIOD_SIZE = [256 2048] -> [256 2048]
Rule 15 [0x47f99870]: BUFFER_SIZE = [512 6144] -> [512 6144]
[93886447] SND EXIT: _snd_pcm_native_hw_refine
[93886447] SND ENTER: snd_pcm_hw_params_set_rate_near
[93886447] SND Info: _snd_pcm_hw_param_set_min(816): var 11 val 44100
[93886447] SND ENTER: snd_pcm_hw_refine
[93886447] SND Info: enter snd_pcm_hw_params_dump
ACCESS: RW_INTERLEAVED
FORMAT: S16_LE
SUBFORMAT: STD
SAMPLE_BITS: 16
FRAME_BITS: 16
CHANNELS: 1
RATE: [44100 96000]
PERIOD_TIME: (2666 256000]
PERIOD_SIZE: [256 2048]
PERIOD_BYTES: [512 4096]
PERIODS: (0 24]
BUFFER_TIME: (5333 768000]
BUFFER_SIZE: [512 6144]
BUFFER_BYTES: [1024 12288]
TICK_TIME: ALL
[93886447] SND Info: exit snd_pcm_hw_params_dump
[93886447] SND Info: enter _snd_pcm_native_hw_refine
Rule 9 [0x47f987ec]: BUFFER_SIZE = [512 6144] -> [2048 6144]
Rule 10 [0x47f9939c]: PERIODS = (0 24] -> [1 24]
Rule 11 [0x47f9939c]: PERIOD_SIZE = [256 2048] -> [256 2048]
Rule 13 [0x47f996a4]: PERIOD_SIZE = [256 2048] -> [256 2048]
Rule 14 [0x47f991ec]: BUFFER_SIZE = [2048 6144] -> [2048 6144]
Rule 16 [0x47f996a4]: BUFFER_SIZE = [2048 6144] -> [2048 6144]
Rule 18 [0x47f996a4]: BUFFER_BYTES = [1024 12288] -> [4096 12288]
Rule 19 [0x47f99870]: PERIOD_TIME = (2666 256000] -> (2666 46440)
Rule 20 [0x47f99870]: BUFFER_TIME = (5333 768000] -> (21333 139320)
Rule 5 [0x47f99870]: FRAME_BITS = [16 16] -> [16 16]
Rule 7 [0x47f99870]: RATE = [44100 96000] -> [44100 96000]
Rule 8 [0x47f99870]: RATE = [44100 96000] -> [44100 96000]
Rule 13 [0x47f996a4]: PERIOD_SIZE = [256 2048] -> [256 2048]
Rule 15 [0x47f99870]: BUFFER_SIZE = [2048 6144] -> [2048 6144]
Rule 16 [0x47f996a4]: BUFFER_SIZE = [2048 6144] -> [2048 6144]
[93886448] SND EXIT: _snd_pcm_native_hw_refine
[93886448] SND ENTER: snd_pcm_hw_refine
[93886448] SND Info: enter snd_pcm_hw_params_dump
ACCESS: RW_INTERLEAVED
FORMAT: S16_LE
SUBFORMAT: STD
SAMPLE_BITS: 16
FRAME_BITS: 16
CHANNELS: 1
RATE: [44100 44100]
PERIOD_TIME: (2666 46440)
PERIOD_SIZE: [256 2048]
PERIOD_BYTES: [512 4096]
PERIODS: [1 24]
BUFFER_TIME: (21333 139320)
BUFFER_SIZE: [2048 6144]
BUFFER_BYTES: [4096 12288]
TICK_TIME: ALL
[93886448] SND Info: exit snd_pcm_hw_params_dump
[93886448] SND Info: enter _snd_pcm_native_hw_refine
Rule 9 [0x47f987ec]: BUFFER_SIZE = [2048 6144] -> [2048 6144]
Rule 13 [0x47f996a4]: PERIOD_SIZE = [256 2048] -> [256 2048]
Rule 16 [0x47f996a4]: BUFFER_SIZE = [2048 6144] -> [2048 6144]
Rule 19 [0x47f99870]: PERIOD_TIME = (2666 46440) -> (5804 46440)
Rule 20 [0x47f99870]: BUFFER_TIME = (21333 139320) -> (46439 139320)
Rule 7 [0x47f99870]: RATE = [44100 44100] -> [44100 44100]
Rule 8 [0x47f99870]: RATE = [44100 44100] -> [44100 44100]
Rule 13 [0x47f996a4]: PERIOD_SIZE = [256 2048] -> [256 2048]
Rule 16 [0x47f996a4]: BUFFER_SIZE = [2048 6144] -> [2048 6144]
[93886448] SND EXIT: _snd_pcm_native_hw_refine
[93886448] SND ENTER: snd_pcm_hw_params_set_buffer_size_near
[93886448] SND Info: _snd_pcm_hw_param_set_min(816): var 17 val 8192
[93886448] SND ERROR: snd_interval_refine_min(360): err -22
[93886448] SND Info: _snd_pcm_hw_param_set_max(851): var 17 val 8192
[93886448] SND ENTER: snd_pcm_hw_refine
[93886448] SND Info: enter snd_pcm_hw_params_dump
ACCESS: RW_INTERLEAVED
FORMAT: S16_LE
SUBFORMAT: STD
SAMPLE_BITS: 16
FRAME_BITS: 16
CHANNELS: 1
RATE: 44100
PERIOD_TIME: (5804 46440)
PERIOD_SIZE: [256 2048]
PERIOD_BYTES: [512 4096]
PERIODS: [1 24]
BUFFER_TIME: (46439 139320)
BUFFER_SIZE: [6144 6144]
BUFFER_BYTES: [4096 12288]
TICK_TIME: ALL
[93886448] SND Info: exit snd_pcm_hw_params_dump
[93886448] SND Info: enter _snd_pcm_native_hw_refine
Rule 5 [0x47f99870]: FRAME_BITS = [16 16] -> [16 16]
Rule 8 [0x47f99870]: RATE = [44100 44100] -> [44100 44100]
Rule 10 [0x47f9939c]: PERIODS = [1 24] -> [3 24]
Rule 11 [0x47f9939c]: PERIOD_SIZE = [256 2048] -> [256 2048]
Rule 14 [0x47f991ec]: BUFFER_SIZE = [6144 6144] -> [6144 6144]
Rule 18 [0x47f996a4]: BUFFER_BYTES = [4096 12288] -> [12288 12288]
Rule 20 [0x47f99870]: BUFFER_TIME = (46439 139320) -> (139319 139320)
Rule 5 [0x47f99870]: FRAME_BITS = [16 16] -> [16 16]
Rule 8 [0x47f99870]: RATE = [44100 44100] -> [44100 44100]
Rule 15 [0x47f99870]: BUFFER_SIZE = [6144 6144] -> [6144 6144]
Rule 16 [0x47f996a4]: BUFFER_SIZE = [6144 6144] -> [6144 6144]
[93886449] SND EXIT: _snd_pcm_native_hw_refine
[93886449] SND ENTER: snd_pcm_hw_params_set_period_size_near: val 6144
[93886449] SND Info: _snd_pcm_hw_param_set_min(816): var 13 val 6144
[93886449] SND ERROR: snd_interval_refine_min(360): err -22
[93886449] SND Info: _snd_pcm_hw_param_set_max(851): var 13 val 6144
[93886449] SND ENTER: snd_pcm_hw_refine
[93886449] SND Info: enter snd_pcm_hw_params_dump
ACCESS: RW_INTERLEAVED
FORMAT: S16_LE
SUBFORMAT: STD
SAMPLE_BITS: 16
FRAME_BITS: 16
CHANNELS: 1
RATE: 44100
PERIOD_TIME: (5804 46440)
PERIOD_SIZE: [2048 2048]
PERIOD_BYTES: [512 4096]
PERIODS: [3 24]
BUFFER_TIME: (139319 139320)
BUFFER_SIZE: 6144
BUFFER_BYTES: 12288
TICK_TIME: ALL
[93886449] SND Info: exit snd_pcm_hw_params_dump
[93886449] SND Info: enter _snd_pcm_native_hw_refine
Rule 4 [0x47f99870]: FRAME_BITS = [16 16] -> [16 16]
Rule 7 [0x47f99870]: RATE = [44100 44100] -> [44100 44100]
Rule 10 [0x47f9939c]: PERIODS = [3 24] -> [3 3]
Rule 11 [0x47f9939c]: PERIOD_SIZE = [2048 2048] -> [2048 2048]
Rule 14 [0x47f991ec]: BUFFER_SIZE = [6144 6144] -> [6144 6144]
Rule 17 [0x47f996a4]: PERIOD_BYTES = [512 4096] -> [4096 4096]
Rule 19 [0x47f99870]: PERIOD_TIME = (5804 46440) -> (46439 46440)
Rule 4 [0x47f99870]: FRAME_BITS = [16 16] -> [16 16]
Rule 7 [0x47f99870]: RATE = [44100 44100] -> [44100 44100]
Rule 12 [0x47f99870]: PERIOD_SIZE = [2048 2048] -> [2048 2048]
Rule 13 [0x47f996a4]: PERIOD_SIZE = [2048 2048] -> [2048 2048]
[93886449] SND EXIT: _snd_pcm_native_hw_refine
[93886449] SND ENTER: snd_pcm_hw_params
[93886449] SND ENTER: snd_pcm_hw_refine
[93886449] SND Info: enter snd_pcm_hw_params_dump
ACCESS: RW_INTERLEAVED
FORMAT: S16_LE
SUBFORMAT: STD
SAMPLE_BITS: 16
FRAME_BITS: 16
CHANNELS: 1
RATE: 44100
PERIOD_TIME: (46439 46440)
PERIOD_SIZE: 2048
PERIOD_BYTES: 4096
PERIODS: 3
BUFFER_TIME: (139319 139320)
BUFFER_SIZE: 6144
BUFFER_BYTES: 12288
TICK_TIME: ALL
[93886449] SND Info: exit snd_pcm_hw_params_dump
[93886449] SND Info: enter _snd_pcm_native_hw_refine
[93886449] SND EXIT: _snd_pcm_native_hw_refine
[93886449] SND ENTER: snd_pcm_hw_refine
[93886449] SND Info: enter snd_pcm_hw_params_dump
ACCESS: RW_INTERLEAVED
FORMAT: S16_LE
SUBFORMAT: STD
SAMPLE_BITS: 16
FRAME_BITS: 16
CHANNELS: 1
RATE: 44100
PERIOD_TIME: (46439 46440)
PERIOD_SIZE: 2048
PERIOD_BYTES: 4096
PERIODS: 3
BUFFER_TIME: (139319 139320)
BUFFER_SIZE: 6144
BUFFER_BYTES: 12288
TICK_TIME: [0 0]
[93886450] SND Info: exit snd_pcm_hw_params_dump
[93886450] SND Info: enter _snd_pcm_native_hw_refine
[93886450] SND EXIT: _snd_pcm_native_hw_refine
[93886450] SND ENTER: snd_pcm_hw_params_get_format
[93886451] SND ENTER: snd_pcm_format_little_endian
[93886451] SND ENTER: snd_pcm_format_signed
[93886451] SND ENTER: snd_pcm_format_width
[93886451] SND ENTER: snd_pcm_hw_params_get_channels
[93886451] SND ENTER: snd_pcm_hw_params_get_rate
[93886451] SND Info: _snd_pcm_hw_params: num_ch 1 rate 44100 width 16
[93886451] SND ENTER: snd_pcm_hw_params_get_format
[93886451] SND ENTER: snd_pcm_hw_params_get_channels
[93886451] SND ENTER: snd_pcm_format_width
[93886451] SND ENTER: snd_pcm_sw_params
[93886451] SND ENTER: snd_pcm_hw_params_get_access
[93886451] SND ENTER: snd_pcm_prepare

...

This in any way related?
Seem someone was chasing a sound issue and left 'on' a dump flag in fw7 (this chatter does not happen in fw6).
0 Kudos
BradC
Level 7

Re: 7 breaks roaudioresource?

ok thanks guys. Was hoping it was a known issue.

channel hasn't been changed but after the 7 update some sounds simply don't play anymore. silence. Not good.


will track it down and get a test case as soon as I get a couple other things out the door and have some free time to research whats going on.
♦MiniGolf♦HangMan♦Brain Puck♦Retro Tennis♦BORK♦FLIP♦Pathogen♦Pathogen 2♦Shut the Box♦Birdie♦Logic♦Dots♦Pool♦küglo♦Bubble Wrap♦Trivia Channel♦Mancala♦Air Hockey♦Weather♦CAMERA♦Your Photos Screensaver♦Desert Beauty Screensaver♦Wild Lakes Screensaver♦
0 Kudos
EnTerr
Level 8

Re: 7 breaks roaudioresource?

I am sure we'll hear more on this. Maybe they changed the version of the audio library used (ALSA?) and changes trickled down to us.
There is some place where the Co. makes available copies of the open source software used inside, right? It might be current...
0 Kudos
Roku Employee
Roku Employee

Re: 7 breaks roaudioresource?

"BradC" wrote:
so I noticed the sound in one of my channels stopped working today, I checked and sure enough the player had just gotten updated to 7.

I didn't see anything here on the forum, is this a known issue with the update to 7?


Are you still seeing an issue?

If so, can you let us know which channel and on which Roku model(s) that you saw the issue, if it is straightforward to reproduce?
0 Kudos
BradC
Level 7

Re: 7 breaks roaudioresource?

I can't reproduce this. It may be fixed, or perhaps it was an issue with my player needing to be rebooted after the update. I'm not sure, but things seem to be working now. I'll update if anything comes up.
♦MiniGolf♦HangMan♦Brain Puck♦Retro Tennis♦BORK♦FLIP♦Pathogen♦Pathogen 2♦Shut the Box♦Birdie♦Logic♦Dots♦Pool♦küglo♦Bubble Wrap♦Trivia Channel♦Mancala♦Air Hockey♦Weather♦CAMERA♦Your Photos Screensaver♦Desert Beauty Screensaver♦Wild Lakes Screensaver♦
0 Kudos