Skip to content

Commit 0ee830d

Browse files
committed
experiment playing stream on InternalAudio and WebAudio sink
Signed-off-by: Laurent ARNAL <laurent@clae.net>
1 parent 07e6056 commit 0ee830d

4 files changed

Lines changed: 28 additions & 12 deletions

File tree

bundles/org.openhab.core.audio/src/main/java/org/openhab/core/audio/internal/javasound/JavaSoundAudioSinkImpl.java

Lines changed: 8 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -145,6 +145,11 @@ private void playInThread(final AudioStream audioStream, boolean store) throws J
145145
threadFactory.newThread(() -> {
146146
try {
147147
streamPlayerFinal.play();
148+
149+
while (!streamPlayerFinal.isComplete()) {
150+
int pos = streamPlayerFinal.getPosition();
151+
Thread.sleep(1000);
152+
}
148153
} catch (Exception e) {
149154
logger.error("An exception occurred while playing audio : '{}'", e.getMessage());
150155
} finally {
@@ -179,17 +184,17 @@ public String getId() {
179184

180185
@Override
181186
public @Nullable String getLabel(@Nullable Locale locale) {
182-
return "System Speaker";
187+
return "Internal Audio";
183188
}
184189

185190
@Override
186191
public String getName() {
187-
return "SystemSpeaker";
192+
return "internalaudio";
188193
}
189194

190195
@Override
191196
public String getBinding() {
192-
return "core.audio";
197+
return "audio";
193198
}
194199

195200
@Override

bundles/org.openhab.core.audio/src/main/java/org/openhab/core/audio/internal/webaudio/WebAudioAudioSinkImpl.java

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -110,12 +110,12 @@ public String getId() {
110110

111111
@Override
112112
public String getName() {
113-
return "WebAudio";
113+
return "webaudio";
114114
}
115115

116116
@Override
117117
public String getBinding() {
118-
return "core.audio";
118+
return "audio";
119119
}
120120

121121
@Override

bundles/org.openhab.core.io.rest.media/src/main/java/org/openhab/core/io/rest/media/internal/MediaResource.java

Lines changed: 17 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -51,6 +51,7 @@
5151
import org.openhab.core.media.model.MediaTrack;
5252
import org.openhab.core.thing.ChannelUID;
5353
import org.openhab.core.thing.Thing;
54+
import org.openhab.core.thing.ThingUID;
5455
import org.openhab.core.thing.link.ItemChannelLinkRegistry;
5556
import org.osgi.service.component.annotations.Activate;
5657
import org.osgi.service.component.annotations.Component;
@@ -252,18 +253,28 @@ public Response getSinks(
252253
MediaSinkDTO dto = new MediaSinkDTO(device.getName(), "" + device.getLabel(null), device.getType(),
253254
device.getBinding());
254255

255-
if (device.getType() == "internal") {
256-
dto.setPlayerItemName("internal");
257-
}
258-
256+
logger.info("");
259257
for (Item item : colItem) {
260258
Set<ChannelUID> r1 = itemChannelLinkRegistry.getBoundChannels(item.getName());
259+
Set<Thing> r2 = itemChannelLinkRegistry.getBoundThings(item.getName());
260+
261261
for (ChannelUID ruid : r1) {
262-
if ((ruid.getBindingId().equals(device.getBinding())
263-
&& ruid.getThingUID().getId().equals(device.getName()))) {
262+
ThingUID uid = ruid.getThingUID();
263+
264+
if (ruid.getBindingId().equals(device.getBinding()) && uid.getId().equals(device.getName())) {
264265
dto.setPlayerItemName(item.getName());
265266
}
266267
}
268+
269+
if ("".equals(dto.getPlayerItemName())) {
270+
for (Thing thing : r2) {
271+
if (thing.getThingTypeUID().getBindingId().equals(device.getBinding())
272+
&& thing.getThingTypeUID().getId().equals(device.getName())) {
273+
dto.setPlayerItemName(item.getName());
274+
}
275+
}
276+
}
277+
267278
}
268279
dtoCol.addMediaSinkDTO(dto);
269280
}

bundles/org.openhab.core.io.rest.media/src/main/java/org/openhab/core/io/rest/media/internal/MediaSinkDTO.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -52,7 +52,7 @@ public String getBinding() {
5252
}
5353

5454
public String getPlayerItemName() {
55-
return this.getPlayerItemName();
55+
return this.playerItemName;
5656
}
5757

5858
public void setPlayerItemName(String playerItemName) {

0 commit comments

Comments
 (0)