check if error is format error

This commit is contained in:
Kim Mishra
2023-04-12 10:22:24 -04:00
committed by Eric Daniels
parent bccff100e5
commit 0715258726
2 changed files with 16 additions and 3 deletions

View File

@@ -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
}

View File

@@ -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)
}
}