Audioplayer arbeitet FLAC Playliste nicht ab

Das Original Benutzerinterface Neutrino-SD incl. zapit, sectionsd, yWeb etc...
jojo
Interessierter
Interessierter
Beiträge: 48
Registriert: Freitag 9. Januar 2009, 18:52

Audioplayer arbeitet FLAC Playliste nicht ab

Beitrag von jojo »

Der Audioplayer stoppt nach jedem FLAC-File in der Playlist. Bug oder Feature?
(FLAC ist selbstverständlich mit kompiliert...)
jojo
Interessierter
Interessierter
Beiträge: 48
Registriert: Freitag 9. Januar 2009, 18:52

Re: Audioplayer arbeitet FLAC Playliste nicht ab

Beitrag von jojo »

Problem war/ist, das der Flacdecoder das end-of-file nicht erkennt, d.h. das Stück niemals beendet.

Hier ist der erste Brute-Force Patch, der dieses Verhalten korrigiert.

Code: Alles auswählen

Index: apps/tuxbox/neutrino/src/driver/audiodec/flacdec.cpp
===================================================================
RCS file: /cvs/tuxbox/apps/tuxbox/neutrino/src/driver/audiodec/flacdec.cpp,v
retrieving revision 1.1
diff -u -u -r1.1 flacdec.cpp
--- a/apps/tuxbox/neutrino/src/driver/audiodec/flacdec.cpp	19 Sep 2007 19:55:42 -0000	1.1
+++ b/apps/tuxbox/neutrino/src/driver/audiodec/flacdec.cpp	3 Mar 2009 15:58:12 -0000
@@ -474,16 +474,23 @@
 				*state=PLAY;
 			}
 		}
-
+		if (FLAC__stream_decoder_get_state(mFlacDec) == FLAC__STREAM_DECODER_END_OF_STREAM) {
+			rval = false;
+			break;
+		}
 		rval = FLAC__stream_decoder_process_single(mFlacDec);
 		// TODO: calculate time_played from the actual file position so that REW/FF actions will be included
 		*time_played = (mSamplesProcessed * (mLengthInMsec/1000)) / mTotalSamples;
 
-	} while (rval == FLAC__stream_decoder_process_single(mFlacDec) && *state!=STOP_REQ && Status==OK);
+	} while (rval && *state!=STOP_REQ && Status==OK);
 
 	// let buffer run dry
-	while(rval==0 && *state!=STOP_REQ && Status==OK /* && mReadSlot != mWriteSlot*/)
+	printf("let buffer run dry\n");
+	while (rval==true && *state!=STOP_REQ && Status==OK /* && mReadSlot != mWriteSlot*/)
+	{
+		printf("...drying - *state=%x, Status=%x\n", *state, Status);
 		usleep(100000);
+	}
 
 	/* clean up the junk from the party */
 	if (mMetadata)
Allerdings scheint dies nur ein Teil der Probleme zu sein. Nach dem einige FLAC gespielt werden, bekommen alle weiteren Musikstücke einen deutlich hörbaren Jitter - unabhängig vom Codec-Typ - auch die MP3s. Interessanterweise ändern sich weder Speicherbedarf noch CPU-Last merklich (Neutrino zeigt ca 50% bei FLAC, ca. 75% bei MP3).
rhabarber1848
CDK-Experte
Beiträge: 4335
Registriert: Donnerstag 3. April 2008, 14:05

Re: Audioplayer arbeitet FLAC Playliste nicht ab

Beitrag von rhabarber1848 »