mboost-dp1
Multitrådet H.264/x264 codec?
- Forside
- ⟨
- Forum
- ⟨
- Tagwall
Jeg har en bærbar med en Core Duo 1,66GHz. Den kan fint klare H.264 i 720p lige indtil det begynder at regne i videoen. Pt. bruger jeg VLC-player til afspilning af x264 video. Den har lidt SMP opdateringer, men den når ikke ret meget højere end 60% udnyttelse af CPU'en. Er det virkeligt så umuligt at lave en ordenlig multitrådet dekoder til film?
Uden at vide ret meget om codecs, så ved jeg dog at billedesekvenserne er delt op i små blokke af hvad dder ligner 32x32 eller deromkring. Hvilke nemt kan ses når streamen fejler, eller dekoderen ikke kan følge med streamen. Disse blokke dekodes vel en efter en fra øverste venstre hjørne og tager udgangspunkt i det foregående billede. Derfor burde det da være muligt at starte en ekstra tråd for det næste billede, som dekoder de blokke som tager udgangspunkt i den del af det nuværende billede som er færdig. Hvis tråd #2 modtager en blok som tager udgangspunkt i noget som tråd #1 ikke er færdig med, må den bare vente. Det bør da vel ikke være så svært.
Giver det mening eller er jeg helt ud i hampen?
Uden at vide ret meget om codecs, så ved jeg dog at billedesekvenserne er delt op i små blokke af hvad dder ligner 32x32 eller deromkring. Hvilke nemt kan ses når streamen fejler, eller dekoderen ikke kan følge med streamen. Disse blokke dekodes vel en efter en fra øverste venstre hjørne og tager udgangspunkt i det foregående billede. Derfor burde det da være muligt at starte en ekstra tråd for det næste billede, som dekoder de blokke som tager udgangspunkt i den del af det nuværende billede som er færdig. Hvis tråd #2 modtager en blok som tager udgangspunkt i noget som tråd #1 ikke er færdig med, må den bare vente. Det bør da vel ikke være så svært.
Giver det mening eller er jeg helt ud i hampen?
Helt så simpelt er det nu ikke, data fra én blok glider normalt over i andre blokke, når motivet bevæger sig.
Logisk set burde det være ganske muligt, men den slags er ret besværligt at lave multitrådet med de sprog vi har i dag, til at skrive den slags i.
Det typiske svar på den slags er "nej, det kan ikke lade sig gøre". Jeg vil så gerne tilføje "endnu", for måden vi programmerer på kommer til at ændre sig ganske grundlæggende, når vi skal til at kode op mod flere hundrede kerner. Det er godt på vej, jeg har set på prototyper af disse nye sprog, og det ser ret spændende ud.
(Og der er vist også et par stykker som er udgivet, men jeg tror ikke er er noget klar til produktion endnu.)
Men for at vende tilbage til dit problem... ;-)
Du kan evt. re-encode til et andet codec, fx. divx. Ja, der er et kvalitetstab. Men det er ikke noget i sammenligning med det kvalitetstab du får ved at CPU'en ikke kan følge med.
Du kan også prøve med andre codecs eller andre afspillere. Jeg har én gang opgivet at afspille H.264 på en maskine, for pludselig at opdage at det virkede fint. Om jeg havde skiftet codec, afspiller eller OS ved jeg faktisk ikke lige.
Logisk set burde det være ganske muligt, men den slags er ret besværligt at lave multitrådet med de sprog vi har i dag, til at skrive den slags i.
Det typiske svar på den slags er "nej, det kan ikke lade sig gøre". Jeg vil så gerne tilføje "endnu", for måden vi programmerer på kommer til at ændre sig ganske grundlæggende, når vi skal til at kode op mod flere hundrede kerner. Det er godt på vej, jeg har set på prototyper af disse nye sprog, og det ser ret spændende ud.
(Og der er vist også et par stykker som er udgivet, men jeg tror ikke er er noget klar til produktion endnu.)
Men for at vende tilbage til dit problem... ;-)
Du kan evt. re-encode til et andet codec, fx. divx. Ja, der er et kvalitetstab. Men det er ikke noget i sammenligning med det kvalitetstab du får ved at CPU'en ikke kan følge med.
Du kan også prøve med andre codecs eller andre afspillere. Jeg har én gang opgivet at afspille H.264 på en maskine, for pludselig at opdage at det virkede fint. Om jeg havde skiftet codec, afspiller eller OS ved jeg faktisk ikke lige.
#4 Den er væsenligt bedre optimeret end VLC-player. Jeg kan ikke se nogen forskel i billedekvalitet og den smed ikke en eneste frame i samme regnvejrssekvens. Mange tak.
Opret dig som bruger i dag
Det er gratis, og du binder dig ikke til noget.
Når du er oprettet som bruger, får du adgang til en lang række af sidens andre muligheder, såsom at udforme siden efter eget ønske og deltage i diskussionerne.