mirror of
https://github.com/pion/mediadevices.git
synced 2025-09-26 20:41:46 +08:00
check if error is format error
This commit is contained in:
@@ -2,6 +2,7 @@ package frame
|
||||
|
||||
import (
|
||||
"bytes"
|
||||
"errors"
|
||||
"image"
|
||||
"image/jpeg"
|
||||
)
|
||||
@@ -16,12 +17,17 @@ var (
|
||||
|
||||
func decodeMJPEG(frame []byte, width, height int) (image.Image, func(), error) {
|
||||
img, err := jpeg.Decode(bytes.NewReader(frame))
|
||||
|
||||
if err == nil || (err != nil && err.Error() != "invalid JPEG format: uninitialized Huffman table") {
|
||||
if err == nil {
|
||||
return img, func() {}, err
|
||||
}
|
||||
|
||||
img, err = jpeg.Decode(bytes.NewReader(addMotionDht(frame)))
|
||||
var target jpeg.FormatError = jpeg.FormatError("uninitialized Huffman table")
|
||||
if errors.As(err, &target) {
|
||||
if err.Error() == target.Error() {
|
||||
img, err = jpeg.Decode(bytes.NewReader(addMotionDht(frame)))
|
||||
}
|
||||
}
|
||||
|
||||
return img, func() {}, err
|
||||
}
|
||||
|
||||
|
@@ -42,3 +42,10 @@ func TestAddMotionDht(t *testing.T) {
|
||||
t.Errorf("addMotionDht updated the frame despite being improperly constructed")
|
||||
}
|
||||
}
|
||||
|
||||
func TestDecodeMJPEG(t *testing.T) {
|
||||
_, _, err := decodeMJPEG(UninitializedHuffmanTable, 640, 480)
|
||||
if err != nil {
|
||||
t.Errorf("Expected decode function to pass. Failed with %v\n", err)
|
||||
}
|
||||
}
|
||||
|
Reference in New Issue
Block a user