[Thomson] Vidéo avec son en streaming

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 : 4623
Enregistré le : 18 sept. 2010 12:08
Localisation : Brest et parfois les Flandres

Re: [Thomson] Vidéo avec son en streaming

Message par __sam__ » 04 juin 2015 09:40

22khz son, soit 11111 octets video par seconde. A 50fps, ca fait tout juste 222octets pour compresser une image, soit maxi 111 octets qui ont changés. C'est peu. Le soucis de la compression actuelle est que si on a n octets consécutifs à recopier cela occupe 2n octets.

On pourrait avoir une compression plus "intelligente" qui permette de dire "recopie les n octets suivants" en n+1 octets.

Je pense aux compressions type ANIM sur amiga. Une donnée compressée est du type XX YY. Si XX>0, ca signifie faire un XOR entre YY et les XX octets video sduivants fois (si YY=0, ca revient à sauter, mais sinon ca encode le delta), et si XX<0, ca signfifie fais un XOR entre les YY octets à venir et les -XX octets video consécutifs.

Ca compresse bien les trucs à base de matrice de bayer de 8pix de cotés car le "XOR" encode les différences, et si ce sont des différences d'intensité, ce sera le même bit qui s'allume sur la matrice pour plusieurs octets consécutifs.

Helas, les trucs intelligents mangent des cycles et la video sera moins fluide.

A noter : pour un changement à l'écran il y a fort à parier que les octets pile en dessous sont changés. Du coup on aurait interret à travailler par bloc 8x8, l'offset étant un saut en mode "caractère". Je pense que je vais étudier ce codage ce W.E., dont je soupçonne qu'il sera plutot fluide tout en ayant de bonne qualités de compression.

Dans tous les cas pour réduire le changement entre images, il faut prendre un tramage régulier (8 pixels de large) plutot de type passe bas (pour couper les hautes fréquences que sont les petits changements non significatifs entre images). Exit donc les trucs à diffusion d'erreur (pas régulier, laisse passer trop de hautes fréquences). On peut avoir la même qualité avec du tramage à base de matrices void-and-cluster 16x16. Il faudrait en générer une, mais j'ai un peu peur qu'elle soit trop passe haut et laisse passer trop de bruit (micro changements) entre 2 images consécutives. En revanche un tramage de type demi-ton (avec des "cercles") peut gommer les différences faibles entre images consécutives. Le h8x8a de image-magick peut être un bon candidat:
Image
Samuel.
A500 Vampire V2+, A1200(030@50mhz/fpu/64mb/cf 8go),
GVP530 (MMU/FPU) h.s., R-Pi, TO9, TO8D, TO8.

Daniel
Messages : 11710
Enregistré le : 01 mai 2007 18:30
Localisation : Vaucluse
Contact :

Re: [Thomson] Vidéo avec son en streaming

Message par Daniel » 07 juin 2015 12:00

Pour améliorer la qualité de l'image, j'ai fait une version du programme Thomson avec 2 octets d'image pour un échantillon de son. La fréquence d'échantillonnage passe à 16129 Hz pour 25 images par seconde, la carte SD est lue à 48387 octets/seconde.
Pas mal pour un MO5 8)

Code : Tout sélectionner

/**************************************************\
*                 S D A N I M 3                    * 
*           (c) 2015 - Daniel Coulom               *  
*           http://dcmoto.free.fr/                 *
*           http://forum.system-cfg.com/           *
*--------------------------------------------------*
* Ce code est distribue gratuitement dans l'espoir *
* qu'il sera utile, mais sans aucune  garantie  et *
* sans  engager  la  responsabilité  de  l'auteur. *
* Vous  pouvez  l' utiliser,  le  modifier  et  le *
* diffuser librement, en conservant cette  licence *
* et les références de l'auteur dans   toutes  les *
* copies. L'exploitation commerciale est interdite.*
\**************************************************/

* Ce programme sort video + son 16129 Hz a partir de
* donnees lues sur carte SD par l'Arduino et envoyées
* à l'ordinateur Thomson par les ports manettes.
* Compare a SDANIM2, un seul echantillon de son
* est joue pour deux octets d'image. 

/**************************************************\
*                Version 2015.06.06                *
\**************************************************/
* Historique
* 2015.06.06 premiere version operationnelle

*------------------------------------------------------
* INITIALISATIONS
*------------------------------------------------------
  ORG   $9000 
  
  PSHS  U,Y,X,DP,B,A,CC  empile les registres
  ORCC  #$50      masque les interruptions
  LDX   #$1F40    adresse pour test RAM ou ROM
  LDB   ,X        lecture adresse X
  COM   ,X        tente de modifier adresse X
  CMPB  ,X        test modification adresse X
  BEQ   INIT1     pas de difference -> TO
  COM   ,X        retablissement adresse X
  LDA   #$A7      valeur initialisation DP pour MO
  TFR   A,DP      initialisation DP
  LDA   <$C0      port A du PIA systeme 
  ORA   #$01      set bit 0
  STA   <$C0      selection video forme
  LDX   #$0000    adresse dans ecran
  CLR   NEWPIC+1  adresse nouvel ecran 
  BRA   INIT2     suite des initialisations    
INIT1
  LDA   #$E7      valeur initialisation DP pour TO
  TFR   A,DP      initialisation DP
  LDA   <$C3      registre de donnees peripheriques port C 
  ORA   #$01      set bit 0
  STA   <$C3      selection video forme
  LDX   #$4000    adresse dans ecran
INIT2
  CLRA            A=$00 
  CLRB            B=$00 
  STD   <$CE      selectionne DDRA et DDRB
  LDB   #$7F      B=$7F 
  STD   <$CC      PA b0-7 en entree, PB b0-6 en sortie
  ORA   #$04      set b2
  STA   <$CE      selectionne PORTA
  STA   <$CF      selectionne PORTB

*------------------------------------------------------
* JOUE LA VIDEO ET LA MUSIQUE
* Boucle de 62 cycles = 16129 Hz
*------------------------------------------------------

* lecture déplacement ecran dans B (13 cycles)
PLAY1
  ANDA  #$3F      (2) clear bit 6
  STA   <$CD      (4) request to send
  LDB   <$CC      (4) lecture octet déplacement
  BEQ   PLAY2     (3) nouvelle image

* calcul position dans l ecran (12 cycles)
  ORA   #$40      (2) set bit 6
  STA   <$CD      (4) acknowledge
  ABX             (3) ajout de l'increment 
  BRA   PLAY3     (3) suite

* retour en debut d'ecran (12 cycles)
PLAY2 
  ORA   #$40      (2) set bit 6
  STA   <$CD      (4) acknowledge
NEWPIC
  LDX   #$4000    (3) debut nouvelle image 
  BRA   PLAY3     (3) suite

* lecture octet image dans B (20 cycles)
PLAY3 
  ANDA  #$3F      (2) clear bit 6
  STA   <$CD      (4) request to send
  LDB   <$CC      (4) lecture octet image
  ORA   #$40      (2) set bit 6
  STA   <$CD      (4) acknowledge
  STB   ,X        (4) affiche l'octet image
  
* lecture echantillon de son (17 cycles)
  ANDA  #$3F      (2) clear bit 6
  STA   <$CD      (4) request to send
  LDA   <$CC      (4) lecture echantillon son avec B6
  STA   <$CD      (4) joue le son et acknowledge
  BPL   PLAY1     (3) nouvelle boucle

*------------------------------------------------------
* RETOUR AU BASIC
*------------------------------------------------------
  PULS  CC,A,B,DP,X,Y,U,PC retour au Basic
       
  END 
Le résultat est ici --> http://dcmoto.free.fr/programmes/sdanim ... index.html
Exécutable Windows pour donner un aperçu du résultat --> http://dcmoto.free.fr/programmes/sdanim ... ns_win.zip

Image Image

Image Image
Daniel
L'obstacle augmente mon ardeur.

__sam__
Messages : 4623
Enregistré le : 18 sept. 2010 12:08
Localisation : Brest et parfois les Flandres

Re: [Thomson] Vidéo avec son en streaming

Message par __sam__ » 07 juin 2015 13:07

Ca marche bien sauf quand on est sur un gros plan.

A ce moment là il y a plein d'octets consécutifs à envoyer. L'encodage offset-valeur fait apparaitre plein d'offset à 1 ce qui gaspille la moitié de la bande passante.

Je me demande ce que donnerait un encodage avec la convention offset>0 ==> déplacement et offset<0 ==> recopie des (-offset) consécutifs à l'écran.
Samuel.
A500 Vampire V2+, A1200(030@50mhz/fpu/64mb/cf 8go),
GVP530 (MMU/FPU) h.s., R-Pi, TO9, TO8D, TO8.

Daniel
Messages : 11710
Enregistré le : 01 mai 2007 18:30
Localisation : Vaucluse
Contact :

Re: [Thomson] Vidéo avec son en streaming

Message par Daniel » 07 juin 2015 14:47

Tu as raison, on peut certainement améliorer la compression. Il y a encore du travail...

Pour éviter les défauts avec la méthode actuelle en gros plan, j'ai fait aussi une autre version monochrome sans trame. Elle est presque parfaite pour la fluidité, mais moins agréable à l'oeil à cause du contraste exagéré.

Dans la version actuelle, j'ai rogné l'image pour respecter les proportions. L'autre solution serait d'ajouter des bandes noires, ce qui réduirait le nombre de pixels et corrigerait peut-être en partie les défauts.
Daniel
L'obstacle augmente mon ardeur.

__sam__
Messages : 4623
Enregistré le : 18 sept. 2010 12:08
Localisation : Brest et parfois les Flandres

Re: [Thomson] Vidéo avec son en streaming

Message par __sam__ » 07 juin 2015 14:57

Le problème a avec les méthodes de compression à motif variables (par exemple le cas b<0 entrainant la recopie des n octets suivants), c'est que le débit audio ne serait plus constant. Ce qui sera perçu de façon négative. Autant on accepte facilement des irrégularités dans la vidéo, autant un blanc dans le son est jugé comme détruisant complètement l'expérience utilisateur.

Sinon réduire la taille de l'image est une solution. Un dither moins bruité est aussi un truc à tester. As tu essayé le tramage haftone ?
Samuel.
A500 Vampire V2+, A1200(030@50mhz/fpu/64mb/cf 8go),
GVP530 (MMU/FPU) h.s., R-Pi, TO9, TO8D, TO8.

Daniel
Messages : 11710
Enregistré le : 01 mai 2007 18:30
Localisation : Vaucluse
Contact :

Re: [Thomson] Vidéo avec son en streaming

Message par Daniel » 07 juin 2015 16:07

Avec une trame halftone à 45° et des bandes noires à droite et à gauche la vidéo est nettement plus fluide en gros plan, quoique pas encore parfaite. Par contre je trouve l'image moins belle. Il faudrait appeler à l'aide la nanotechnique :wink:
@sam : veux-tu les images originales pour essayer de les travailler avec tes outils ?
01.png
01.png (3.16 Kio) Vu 1034 fois
Daniel
L'obstacle augmente mon ardeur.

__sam__
Messages : 4623
Enregistré le : 18 sept. 2010 12:08
Localisation : Brest et parfois les Flandres

Re: [Thomson] Vidéo avec son en streaming

Message par __sam__ » 07 juin 2015 17:05

C'est normal que c'est moins bon car c'est passe-bas. Plein de détails (hautes fréquence) sont gommées, mais du coup ca se compresse mieux.

Mais moins belle c'est une question d'habitude. Le halftone est associé aux images de journaux papier. Si tu t'éloigne un poil de l'écran le halftone rend aussi bien je pense (c'est ca le secret caché de la nano-technique).
Daniel a écrit :@sam : veux-tu les images originales pour essayer de les travailler avec tes outils ?
Oui je veux bien.

J'essaye de faire un script perl pour produire des fichiers audio/video, mais ca marche pas comme je veux. J'arrive à rien de bon :( C'est terrible ce sentiment de "pédaler dans la choucroute" sans rien sortir de correct et de voir qu'un truc qu'on imagine simple se complexifier pour des détails tout en ne marchant toujours pas. Je dois prendre le truc par le mauvais coté (pb de synchro audio/video lié au fait qu'une image n'a pas une taille fixe).

Les trucs qui marche sont toujours des trucs petits et simple normalement :!:

De ce que je vois de l'exemple, dans ton rendu tu décide de toujours rendre l'image en cours même si ca empiète sur la suivante.

Tu rattrape le retard comment au niveau de l'audio/video à ce moment là? Tu sautes n-images pour prendre la prochaine en synchro avec le flux vidéo, mais du coup tu es un poil en avance sur la partie audio. Comment tu gère ca? Cela se produit aussi quand une image change trop peu et qu'on atteint la fin de l'image trop tôt par rapport au flux audio. Grrr. C'est trop compliqué comme façon de faire. Il doit y avoir plus simple.
Samuel.
A500 Vampire V2+, A1200(030@50mhz/fpu/64mb/cf 8go),
GVP530 (MMU/FPU) h.s., R-Pi, TO9, TO8D, TO8.

Avatar du membre
6502man
Messages : 9423
Enregistré le : 12 avr. 2007 22:46
Localisation : VAR
Contact :

Re: [Thomson] Vidéo avec son en streaming

Message par 6502man » 07 juin 2015 17:28

Impossible de télécharger la version Windows :roll:
Phil.

www.6502man.com

To bit or not to bit.
1 or 0.

__sam__
Messages : 4623
Enregistré le : 18 sept. 2010 12:08
Localisation : Brest et parfois les Flandres

Re: [Thomson] Vidéo avec son en streaming

Message par __sam__ » 07 juin 2015 17:59

Chez moi (free) la version windows se télécharge sans soucis. Essaye cette URL (limitée à 4 jours): http://www.cjoint.com/data3/EFhp7m5uudr ... ns-win.zip
Un fois que tu l'as récup fais moi signe, je la détruirai.
Samuel.
A500 Vampire V2+, A1200(030@50mhz/fpu/64mb/cf 8go),
GVP530 (MMU/FPU) h.s., R-Pi, TO9, TO8D, TO8.

Avatar du membre
fneck
Site Admin
Messages : 12830
Enregistré le : 01 avr. 2007 12:03
Localisation : Drôme Provençale (26)
Contact :

Re: [Thomson] Vidéo avec son en streaming

Message par fneck » 07 juin 2015 19:03

Moi je trouve ça magnifique 8)
Chapeau, c'est du grand art, sur microprocesseur 8 bits et à 1 MHz (faut pas l'oublier!)

Nota : pas de soucis pour moi coté téléchargement.

Daniel
Messages : 11710
Enregistré le : 01 mai 2007 18:30
Localisation : Vaucluse
Contact :

Re: [Thomson] Vidéo avec son en streaming

Message par Daniel » 07 juin 2015 20:06

__sam__ a écrit :Mais moins belle c'est une question d'habitude.
Dans le dernier screenshot, le costume gris foncé uni ressemble à une robe de chambre à pois avec un col noir. Il faudra longtemps pour que je m'y habitue :wink:
J'ai trouvé une autre version de la chanson avec moins de gros plans, et sans les fondus enchaînés qui rendent mal dans la première version. C'est plutôt mieux, sauf qu'à un moment il y a un travelling latéral sur le rideau plissé de fond de scène, catastrophique pour cette méthode de compression.

Le principe est le suivant :
- Il y a 25 images par seconde, synchronisées avec les échantillons
- L'écran est mis à jour par balayage du début à la fin, avec le contenu de l'image actuelle. Normalement c'est l'image n, mais s'il y a trop de différences tout l'écran n'est pas mis à jour en 1/25e de seconde, le bas est mis à jour avec l'image n+1 (voire n+2 ou n+3 si trop de détails ont changé). On peut donc perdre des mises à jour intermédiaires.
- On revient au début de l'écran quand le précédent a été entièrement balayé. S'il a été balayé en moins de 1/25e de seconde, on continue à rechercher des différences avec la même image. Donc on n'en trouve pas, mais on continue quand même le balayage.

L'upload des images originales de la vidéo est en cours, mais c'est énorme (717 Mo). S'il arrive au bout je posterai le lien.

@Fabien : Je suis le premier étonné de ce résultat, obtenu avec un simple MO5. Je n'ai pas essayé sur TO7, mais normalement le résultat est identique. A ma connaissance, il n'y a aucune démo comparable toutes plateformes 8 bits confondues.
Daniel
L'obstacle augmente mon ardeur.

Daniel
Messages : 11710
Enregistré le : 01 mai 2007 18:30
Localisation : Vaucluse
Contact :

Re: [Thomson] Vidéo avec son en streaming

Message par Daniel » 07 juin 2015 20:49

Bon, voilà ce qui arrive après avoir uploadé 500 Mo de .bmp en une heure et demi :
Etat de l'émission de bmp_680x560.7z
Virus detecté, fichier détruit et banni...
Ils sont très forts chez free, pour détecter un virus dans un .bmp. Dans les exécutables compressés avec UPX, je n'apprécie déjà pas beaucoup, mais dans un .bmp je me demande comment on peut devenir parano à ce point. Désolé, sam, tu n'auras pas les images.
virus.png
virus.png (35.07 Kio) Vu 997 fois
[Edit] Pour comparer les services, je relance l'upload chez OVH. Il faudra attendre demain pour le résultat...

[Edit2] Upload terminé chez OVH, fichiers .bmp disponibles 30 jours à partir du 08/06/2015 :
http://demo.ovh.eu/sn/69804134c7a7cf755a9f160c07b9e319/
Modifié en dernier par Daniel le 08 juin 2015 07:12, modifié 1 fois.
Daniel
L'obstacle augmente mon ardeur.

__sam__
Messages : 4623
Enregistré le : 18 sept. 2010 12:08
Localisation : Brest et parfois les Flandres

Re: [Thomson] Vidéo avec son en streaming

Message par __sam__ » 07 juin 2015 21:16

Ne t'embête plus avec l'upload. J'ai un peu avancé sur mon script. Voilà ce qu'il pourrait donner (preview gif) avec le dither h4x4a (17 niveaux de gris)
Image
Le gamma est corrigé et du coup les zones noires sont éliminées. En conséquence la compression (gif du moins) est plus performante.
Samuel.
A500 Vampire V2+, A1200(030@50mhz/fpu/64mb/cf 8go),
GVP530 (MMU/FPU) h.s., R-Pi, TO9, TO8D, TO8.

Daniel
Messages : 11710
Enregistré le : 01 mai 2007 18:30
Localisation : Vaucluse
Contact :

Re: [Thomson] Vidéo avec son en streaming

Message par Daniel » 07 juin 2015 21:30

Sam, c'est du travail d'artiste par rapport à mes tramages de débutant ! Reste à essayer avec le programme sdanim3, ou mieux avec une meilleure méthode de compression.
Daniel
L'obstacle augmente mon ardeur.

Avatar du membre
6502man
Messages : 9423
Enregistré le : 12 avr. 2007 22:46
Localisation : VAR
Contact :

Re: [Thomson] Vidéo avec son en streaming

Message par 6502man » 07 juin 2015 22:44

Je viens enfin de visionner la démo et c'est excellent Daniel :D :D :D

Vidéo (son + audio) en plein écran sur un micro 8 bits félicitations :D :D
Phil.

www.6502man.com

To bit or not to bit.
1 or 0.

Répondre