diff --git a/frame.go b/frame.go index e0288cf..bbbeb80 100644 --- a/frame.go +++ b/frame.go @@ -36,11 +36,11 @@ func GetVideoFrame(filename string, n int, frameBuffer []byte) error { } if frameBuffer == nil { - frameBuffer = make([]byte, frameBufferSize) - } else { - if len(frameBuffer) < frameBufferSize { - return errors.New("vidio: provided frame buffer size is smaller than the frame size") - } + return errors.New("vidio: provided frame buffer reference is nil") + } + + if len(frameBuffer) < frameBufferSize { + return errors.New("vidio: provided frame buffer size is smaller than the frame size") } selectExpression, err := buildSelectExpression(n) diff --git a/frame_test.go b/frame_test.go index ce60325..369ffb2 100644 --- a/frame_test.go +++ b/frame_test.go @@ -30,6 +30,28 @@ func TestGetFrameShouldReturnErrorOnOutOfRangeFrame(t *testing.T) { } } +func TestGetFrameShouldReturnErrorOnNilFrameBuffer(t *testing.T) { + path := "test/koala.mp4" + var buffer []byte = nil + + err := GetVideoFrame(path, 0, buffer) + + if err == nil { + t.Error("Error was expected to not be nil") + } +} + +func TestGetFrameShouldReturnErrorOnInvalidFrameBufferSize(t *testing.T) { + path := "test/koala.mp4" + img := image.NewRGBA(image.Rect(0, 0, 480/2, 270/2)) + + err := GetVideoFrame(path, 0, img.Pix) + + if err == nil { + t.Error("Error was expected to not be nil") + } +} + func TestGetFrameShouldReturnCorrectFrame(t *testing.T) { path := "test/koala.mp4" img := image.NewRGBA(image.Rect(0, 0, 480, 270))