kann mir vielleicht jemand detailiertere Infos zum DVB API Kommando "AUDIO_SET_AV_SYNC",
das per ioctl an's audio device gesendet werden kann, geben.
Beim Erforschen der "dbox drivers" konnte ich mir leider kein ausreichendes Bild über die genaue
Funktionalität dieses Kommandos machen, da letztendlich in avia_av_core.c nur ein
"avia_av_dram_write()" mit entsprechendem Wert (AVIA_AV_SYNC_MODE_AV) abgesetzt wird.
Klar ist, daß dies nur passiert, wenn mindestens ein device (audio/video) im "PLAY"-Zustand ist.
Mich interessiert aber, wie die Synchronistaion vonstatten geht, wenn ein TS stream (im SPTS)
abgespielt wird und es durch stream fehler zu einer Asynchronität kommt -> Warum kann diese
nicht mehr ausgeglichen werden. Ist der "AV_SYNC" Modus nicht dazu da, dies in einem gewissen
Rahmen (wenn ja, wie groß) wieder auszugleichen ?
Weiterhin sind mir noch die Werte AVIA_AV_SYNC_MODE_AUDIO und AVIA_AV_SYNC_MODE_VIDEO
in's Auge gefallen, die aber per DVB API nicht wählbar sind. Wäre damit ein anderes Verhalten der
Devices zu erwarten, und wenn ja welches ?
Hintergrund ist, daß beim Abspielen von "livestreams" (mit modifizierten movieplayer) und dem Auftreten
von stream Fehlern, Audio und Video asynchron werden.
Bisher her habe ich das durch folgendes Coding - ausgelöst per Fernbedienungstaste - behoben
Code: Alles auswählen
...
//-- stop DMX devices --
ioctl(ctx->dmxv, DMX_STOP);
ioctl(ctx->dmxa, DMX_STOP);
//-- stop AV devices --
ioctl(ctx->vdec, VIDEO_STOP);
ioctl(ctx->adec, AUDIO_STOP);
//-- setup DMX devices (again) --
ctx->p.input = DMX_IN_DVR;
ctx->p.output = DMX_OUT_DECODER;
ctx->p.flags = 0;
ctx->p.pid = ctx->pida;
ctx->p.pes_type = DMX_PES_AUDIO;
ioctl (ctx->dmxa, DMX_SET_PES_FILTER, &(ctx->p));
ctx->p.pid = ctx->pidv;
ctx->p.pes_type = DMX_PES_VIDEO;
ioctl (ctx->dmxv, DMX_SET_PES_FILTER, &(ctx->p));
//-- start AV devices again --
if (ctx->ac3 == 1)
ioctl(ctx->adec, AUDIO_SET_BYPASS_MODE,0UL);
else
ioctl(ctx->adec, AUDIO_SET_BYPASS_MODE,1UL);
ioctl(ctx->adec, AUDIO_PLAY); // audio
ioctl(ctx->vdec, VIDEO_PLAY); // video
ioctl(ctx->adec, AUDIO_SET_AV_SYNC, 1UL)
//-- start DMX devices (again) --
ioctl(ctx->dmxa, DMX_START); // audio first ?!
ioctl(ctx->dmxv, DMX_START);
...
maximal unkomfortabel.
Ich suche aber eine Lösung, die z.B. alle 10 Sekunden automatisch resynchronisiert ohne bemerkbare
Unterbrechung. Vielleicht hilft mir ja ein wenig weiter, wenn ich mehr über die Eigenschaften/Besonderheiten
der AVIAs wüßte ...
Weiß ja, daß über diesen Chip nix an Doku zu bekommen ist, aber die bisher angefallenen Erfahrungen
damit sind bestimmt auch schon recht aufschlußreich.
Wäre prima, wenn sich jemand mit dieser Materie etwas besser auskennen würde und mir ein paar
nützliche Infos dazu geben könnte.
- GMo -