Streaming Video+Son sur vieilleries

Cette catégorie traite de développements récents pour nos vieilles machines, applications, jeux ou démos... Amis programmeurs, c'est ici que vous pourrez enfin devenir célèbres!

Modérateurs : Papy.G, fneck, Carl

__sam__
Messages : 7923
Inscription : 18 sept. 2010 12:08
Localisation : Brest et parfois les Flandres

Streaming Video+Son sur vieilleries

Message par __sam__ »

Il semble que les idées comme celle de Daniel mettant en scène du streaming video+son direct depuis une mémoire de masse ait le vent en poupe en ce moment. En effet je viens de trouver sur pouet.net la production "8088 Domination" (1ère @party 2014) qui stream de la video 640x200@30fps + son à 45khz sur un 8088 à 4.77Mhz (voir la 2eme partie de la video qui suit)


Il y a certainement des aspect techno à comprendre et phagociter (la compression par exemple: c'est du code machine qui est directement streamé pour aller encore plus vite). Un truc étonnant c'est que la sortie est N&B sur un moniteur mais passe en couleur sur une sortie composite.

Je connaissais pas particulièrement la musique japonaise, mais le clip en N&B est vraiment bien fait je trouve. Un portage sur Thomson serait marrant à voir. Je suis certain qu'étant donné la video N&B dès l'origine, la décompression de Daniel sur le dispositif de masse toujours secret irait du feu de dieu.
Samuel.
A500 Vampire V2+ ^8^, A1200 (030@50mhz/fpu/64mb/cf 8go),
A500 GVP530(MMU/FPU) h.s., R-Pi, TO9, TO8D, TO8.Démos
Daniel
Messages : 17316
Inscription : 01 mai 2007 18:30
Localisation : Vaucluse
Contact :

Re: Streaming Video+Son sur vieilleries

Message par Daniel »

C'est quand même un processeur 5 fois plus rapide que le 6809 et un nombre de pixels lui aussi multiplié par 5 par rapport au MO5.

Je pense qu'il est possible de rivaliser pour le son, mais j'ai des doutes sur la vidéo. Avec ma technique, les changements de plan rapides ou les inversions vidéo sur tout l'écran sont trop lentes. Je suis curieux de connaître la méthode de compression utilisée pour l'image.
Daniel
L'obstacle augmente mon ardeur.
__sam__
Messages : 7923
Inscription : 18 sept. 2010 12:08
Localisation : Brest et parfois les Flandres

Re: Streaming Video+Son sur vieilleries

Message par __sam__ »

Je crois qu'ils stream directement des instructions x86. Ca doit être des équivalents de "LDX #$AAAA", "LDD #$YYYY; STD ,X++" ou "LDD #$AABB; STB ,X+; DECA; BNE *-3" (le dernier est très compact en x86: une seule instruction) en mémoire. Du coup il n'y a aucune décision durant la décompression. J'imagine que le code est directement exécuté sur le buffer fraichement chargé en mémoire par le contrôleur du disk-dur. Ca va plein pot.
Samuel.
A500 Vampire V2+ ^8^, A1200 (030@50mhz/fpu/64mb/cf 8go),
A500 GVP530(MMU/FPU) h.s., R-Pi, TO9, TO8D, TO8.Démos
Daniel
Messages : 17316
Inscription : 01 mai 2007 18:30
Localisation : Vaucluse
Contact :

Re: Streaming Video+Son sur vieilleries

Message par Daniel »

C'est très astucieux. Ils utilisent certainement un double buffer pour éviter les saccades. Le code chargé dans un buffer doit à la fois afficher l'image, jouer le son et remplir l'autre buffer. Pas simple ! Il faudrait essayer sur MO5 ou TO8.
Daniel
L'obstacle augmente mon ardeur.
Avatar de l’utilisateur
6502man
Messages : 12286
Inscription : 12 avr. 2007 22:46
Localisation : VAR
Contact :

Re: Streaming Video+Son sur vieilleries

Message par 6502man »

Oui très astucieux :D

Mais la vidéo doit peser très très lourd, en même temps avec les support de masse en giga-octets on regarde plus la taille :lol:
Phil.

www.6502man.com

To bit or not to bit.
1 or 0.
__sam__
Messages : 7923
Inscription : 18 sept. 2010 12:08
Localisation : Brest et parfois les Flandres

Re: Streaming Video+Son sur vieilleries

Message par __sam__ »

Oui les data pèsent 30Mo. C'est pas grand chose avec les standards actuels, mais occupent l'ensemble d'un disk-dur de l'époque :mrgreen:

J'ai testé sous winxp sans dosbox: ca marche impec sur mon dell 620 depuis windows-xp.

@daniel: je ne pense pas qu'il y a un double buffer. Il faut que le disk-dur soit défragmenté et que le facteur d'entrelacement soit optimisé pour ne pas avoir de lag dans la video. En outre, on voit de temps en temps des images partiellement affichées (style il n'y a que 1 ligne toutes les 4 lignes d'affichées). C'est très visible lors des changements brutaux.

Ceci me fait penser qu'il fait comme toi: il doit savoir combien il y a de cycles dispo par frame, et essaye d'encoder le delta entre l'image courante et celle précédente dans le nombre de cycles imparti. S'il n'y arrive pas, il laisse tomber, dessine le maximum et passe à l'image suivante. C'est du "best effort". Ca doit bien marcher quand le débit du disk-dur est suffisamment rapide. Avec le montage de la carte compact, tu disais pouvoir récupérer en théorie à 400ko/sec, donc le streaming de code devrait être exploitable.

Je ne sais pas si un montage hardware est capable de faire apparaitre sur 32 octets consécutifs (ou plus) un buffer d'échange avec une mémoire de masse. Mais si oui, on pourrait carrément faire éxecuter le 6809 directement sur ces buffers d'IO mappés en ram. On aurait alors un truc de folie: les derniers octets du buffer contient un bra au début, et la logique détectant la lecture du dernier octet provoque la mise à jour des 32 registres pour contenir les 32 octets suivants.

On aurait alors un truc de folie: le CPU tournerait en boucle sur cette zone de 32 octets/registres en mémoire et exécuterait directement le remplissage video (pour casser le cycle il suffira que le code streamé fasse un jmp à l'exterieur de cette zone mémoire). Typiquement le buffer de 32 octets pourrait être configuré comme suit: 5x "LDD #$ABCD; STD $1234" suivi d'un "BRA *-32", ce qui fait exactement 32 octets. Cela copie 10 octets en ram video en 5*(3+6)+3=48 cycles. Il faudrait donc 800*48=38.4ms pour remplir l'ensemble de la RAM video. On atteinds les 25fps (40ms/image) sans problèmes :!: :!: :!:

sam (oulà je sur-chauffe).

[EDIT]En fait on doit même pouvoir faire mieux en débit. Si au lieu de faire des LDD/STD dans ces 32 regs, on avait un truc genre:

Code : Tout sélectionner

* S pointe sur la fin de la zone video
DEBUT:
   LDU   #DATA
   PULU  D,X,Y,DP
   PSHS  D,X,Y,DP
   PULU  D,X,Y,DP
   PSHS  D,X,Y,DP
   BRA   DEBUT
   NOP
DATA:
   rmb 9
   rmb 9
* 32 octets exactement
On copie 18 octets en 3+(5+9)*4+3=62 cycles. La RAM video serait remplie en (8000/18)*62=27528 cycles, soit 36 fps.

Hum cette zone mémoire faisant apparaitre du code dynamique est un truc super efficace!!! Je ne connais rien en électronique, mais est-ce imaginable d'avoir une zone mémoire de 32 regs contigus représentant une RAM à une adresse fixe par tronçon de 32 octets ? Avec ca, les thomson seraient boostés de façon très élégante je trouve.
Samuel.
A500 Vampire V2+ ^8^, A1200 (030@50mhz/fpu/64mb/cf 8go),
A500 GVP530(MMU/FPU) h.s., R-Pi, TO9, TO8D, TO8.Démos
Fool-DupleX
Messages : 2284
Inscription : 06 avr. 2009 12:07

Re: Streaming Video+Son sur vieilleries

Message par Fool-DupleX »

C'est faisable ... Daniel possède déjà un petit gadget susceptible de faire tout ça :wink:

De la même manière que je n'étais pas impressionné par 8088 Corruption, je ne suis pas impressionné par cette démo. Seul le mode graphique m'intrigue. Du son a 45 KHz sur un 8086 avec une Sound Blaster, je l'ai fait quand j'avais 15 ans.

Petite optimisation : pour une video de film genre tron, on peut se limiter a une image de 320x180 avec des bandes noires en haut et en bas qu'on ne touche même pas. Mais je ne suis pas spécialement pour cette histoire de code dynamique.

Enfin je ne suis pas d'accord, le 8086 n'est pas 5 fois plus rapide, lorsqu'une instruction fait en moyenne 4 cycles a 1 MHz sur 6809 et 11 cycles a 4.77 MHz sur 8086, moi je dis que c'est 1.73 fois plus rapide.

@Daniel : je n'ai pas repris le debug du gadget, je suis sur deux autres projets en ce moment. Mais ce n'est que partie remise. Il faut absolument qu'on termine ce truc.
Daniel
Messages : 17316
Inscription : 01 mai 2007 18:30
Localisation : Vaucluse
Contact :

Re: Streaming Video+Son sur vieilleries

Message par Daniel »

@Fool-DupleX : de mon côté j'ai l'intention de faire des tests en parallèle des tiens, avec un module du commerce pour connecter la carte et une simple logique TTL pour le décodage d'adresse. Je vais m'y mettre après les vacances, et nous pourrons comparer nos résultats. Je vais essayer de supprimer les filtres R/C avant le module en les remplaçant par un terminateur de bus derrière.

@Sam : je te propose de venir passer des vacances dans le midi et de tester tes idées avec le prototype actuel. Il n'est pas encore complètement finalisé, mais il fonctionne très bien pour faire des essais. J'offre un TO8D (ou encore mieux : un TO8 + CS91-280 + SDMOTO) quand tu auras fait "6809 Domination" sur MO5. La taille maxi de la démo est limitée à 144 pétaoctets. Pour un MO5, c'est assez confortable.
Daniel
L'obstacle augmente mon ardeur.
__sam__
Messages : 7923
Inscription : 18 sept. 2010 12:08
Localisation : Brest et parfois les Flandres

Re: Streaming Video+Son sur vieilleries

Message par __sam__ »

:mrgreen: C'est vrai qu'il y a des tas de trucs à faire sur thomson :!:

Là je réfléchis à un interpréteur/compilateur de langage inédit sur thomson... (tant qu'on réfléchit ca ne plante pas tout de suite :P )
Samuel.
A500 Vampire V2+ ^8^, A1200 (030@50mhz/fpu/64mb/cf 8go),
A500 GVP530(MMU/FPU) h.s., R-Pi, TO9, TO8D, TO8.Démos
Fool-DupleX
Messages : 2284
Inscription : 06 avr. 2009 12:07

Re: Streaming Video+Son sur vieilleries

Message par Fool-DupleX »

Par rapport au compilateur basic ou autre, je recommande l'excellent livre "L'interpréteur basic du to7/70" (http://dcmoto.free.fr/documentation/int ... basic.djvu). C'est une mine d'or d'astuces. Seul vrai manque dans ce livre, mais de taille, il n'explique pas comment developper un pilote de peripherique (genre "CASS:").
__sam__
Messages : 7923
Inscription : 18 sept. 2010 12:08
Localisation : Brest et parfois les Flandres

Re: Streaming Video+Son sur vieilleries

Message par __sam__ »

Ici il y a du streaming audio (7khz) + video (16hz) direct depuis le floppy disk d'un C64 (voir les crédits de fin vers 12:40)

Ahhh Sandra ("les couvertures me grattent")... nostalgie.
Samuel.
A500 Vampire V2+ ^8^, A1200 (030@50mhz/fpu/64mb/cf 8go),
A500 GVP530(MMU/FPU) h.s., R-Pi, TO9, TO8D, TO8.Démos
__sam__
Messages : 7923
Inscription : 18 sept. 2010 12:08
Localisation : Brest et parfois les Flandres

Re: Streaming Video+Son sur vieilleries

Message par __sam__ »

Ici encore du streaming video depuis une mémoire de masse. Sur Atari-ST cette fois ci: https://www.pouet.net/prod.php?which=63527. C'est la démo qui présente le payer affichant un film contenant des démos d'autres machines (j'ai trouvé des vrais trucs amiga dedans :shock:). Il n'y a pas de compression, c'est du streaming plein pot à 12.5fps si j'ai bien compris. (le 68000@8Mhz a l'air à la ramasse, mais c'est lié au fait qu'il est occupé par produire plus de couleurs que l'atari n'est capable de faire en standard je pense).


@Daniel: Ah au fait, je commence à me faire une idée de qui est l'autre personne derrière le mystérieux hardware capable de streamer à 400ko/sec sur thomson....
Samuel.
A500 Vampire V2+ ^8^, A1200 (030@50mhz/fpu/64mb/cf 8go),
A500 GVP530(MMU/FPU) h.s., R-Pi, TO9, TO8D, TO8.Démos
Daniel
Messages : 17316
Inscription : 01 mai 2007 18:30
Localisation : Vaucluse
Contact :

Re: Streaming Video+Son sur vieilleries

Message par Daniel »

La démo de streaming de Noël 2013 n'étant plus disponible en téléchargement, j'ai mis un petit extrait sur internet, pour mémoire.
Les participants à la dernière visu system-cfg l'ont vu sur MO5 + contrôleur SX90-018.
http://dcmoto.free.fr/cfmo/amsterdam_win.zip

C'est du 22050 Hz 6 bits mono, 50 images par seconde (quelques images incomplètes lors des changements de plans ou mouvements trop rapides). L'algorithme de diffusion d'erreur est un classique Floyd-Steinberg. On pourrait faire mieux, mais ce n'était pas l'objectif principal.

Image
Daniel
L'obstacle augmente mon ardeur.
__sam__
Messages : 7923
Inscription : 18 sept. 2010 12:08
Localisation : Brest et parfois les Flandres

Re: Streaming Video+Son sur vieilleries

Message par __sam__ »

Des détails sur l'encodage de "8088 Domination" sont dispo ici: http://trixter.oldskool.org/2014/06/20/ ... onclusion/

De ce que j'en ai lu, j'en avais fait la bonne analyse (streaming de code x86 pour écrire en ram video sans prise de décision dans le player plus diverses optims pour réduire la taille des modifs: supression des changements trop petits etc).

@Daniel: j'ai fait un peu de pub pour tes demos sur SDMOTO (simon's cat) et cette demo avec Brel sur pouet.net (et Brel ca va changer de la musique Techno des démos classiques, ils vont avoir un choc :P là bas).
Samuel.
A500 Vampire V2+ ^8^, A1200 (030@50mhz/fpu/64mb/cf 8go),
A500 GVP530(MMU/FPU) h.s., R-Pi, TO9, TO8D, TO8.Démos
Répondre