ffmpeg-light 0.7 → 0.7.1
raw patch · 5 files changed
+34/−7 lines, 5 filesdep ~mtldep ~transformers
Dependency ranges changed: mtl, transformers
Files
- CHANGELOG.md +18/−0
- ffmpeg-light.cabal +5/−3
- src/Codec/FFmpeg/Encode.hs +9/−4
- src/Codec/FFmpeg/Enums.hsc +1/−0
- src/nameCompat.h +1/−0
CHANGELOG.md view
@@ -1,3 +1,21 @@+0.7.1+---++* Bumped transformers dependency++ Note: The use of mtl still triggers deprecation warnings from+ transformers.++* Fixed bug with changing source pixel format from RGB during+ encoding.++* Added BGRA pixel format++0.7+---++* Simplified top-level API to focus on JuicyPixels-based interface+ 0.6 ---
ffmpeg-light.cabal view
@@ -1,5 +1,5 @@ name: ffmpeg-light-version: 0.7+version: 0.7.1 synopsis: Minimal bindings to the FFmpeg library. description: Stream frames from an encoded video, or stream frames to@@ -35,10 +35,12 @@ flag BuildDemo description: Build demo executable default: False+ manual: True flag BuildRasterDemo description: Build Rasterific demo executable default: False+ manual: True library exposed-modules: Codec.FFmpeg,@@ -54,8 +56,8 @@ build-tools: hsc2hs build-depends: base >=4.6 && < 5, vector >= 0.10.9 && < 0.11,- transformers >= 0.3 && < 0.4,- mtl >= 2.1.3 && < 2.2,+ transformers >= 0.3 && < 0.5,+ mtl >= 2.1.3 && < 2.3, JuicyPixels >= 3.1 && < 3.2 pkgconfig-depends: libavutil, libavformat, libavcodec, libswscale hs-source-dirs: src
src/Codec/FFmpeg/Encode.hs view
@@ -16,6 +16,7 @@ import Control.Monad (when, void) import Control.Monad.Error.Class import Data.Bits+import Data.IORef import Data.Maybe (fromMaybe) import Data.Ord (comparing) import Data.Traversable (for)@@ -315,9 +316,9 @@ -- Initialize the scaler that we use to convert RGB -> dstFmt -- Note that libswscaler does not support Pal8 as an output format. sws <- if dstFmt /= avPixFmtPal8 && dstFmt /= avPixFmtRgb8- then Just <$> - swsInit (ImageInfo (epWidth ep) (epHeight ep) avPixFmtRgb24)+ then swsInit (ImageInfo (epWidth ep) (epHeight ep) avPixFmtRgb24) dstInfo swsBilinear+ >>= fmap Just . newIORef else return Nothing pkt <- AVPacket <$> av_malloc (fromIntegral packetSize)@@ -380,8 +381,12 @@ (error $ "Palettized output requires source images to be the \ \same resolution as the output video") let pixels' = maybe pixels ($ V.unsafeCast pixels) palettizer- sws' <- for sws $ \s ->- swsReset s (ImageInfo srcW srcH srcFmt) dstInfo swsBilinear+ sws' <- for sws $ \sPtr -> do+ s <- readIORef sPtr+ s' <- swsReset s (ImageInfo srcW srcH srcFmt) dstInfo+ swsBilinear+ writeIORef sPtr s'+ return s' fillDst sws' (srcFmt, V2 srcW srcH, pixels') getPts dstFrame >>= setPts dstFrame . (+ frameTime) encode_video_check ctx pkt (Just dstFrame) >>= flip when writePacket
src/Codec/FFmpeg/Enums.hsc view
@@ -33,6 +33,7 @@ , AV_PIX_FMT_NONE\ , AV_PIX_FMT_RGB24\ , AV_PIX_FMT_RGBA\+ , AV_PIX_FMT_BGRA\ , AV_PIX_FMT_Y400A\ , AV_PIX_FMT_RGB32\ , AV_PIX_FMT_RGB32_1\
src/nameCompat.h view
@@ -6,6 +6,7 @@ #define AV_PIX_FMT_NONE PIX_FMT_NONE #define AV_PIX_FMT_RGB24 PIX_FMT_RGB24 #define AV_PIX_FMT_RGBA PIX_FMT_RGBA+#define AV_PIX_FMT_BGRA PIX_FMT_BGRA #define AV_PIX_FMT_Y400A PIX_FMT_Y400A #define AV_PIX_FMT_RGB32 PIX_FMT_RGB32 #define AV_PIX_FMT_RGB32_1 PIX_FMT_RGB32_1