diff options
Diffstat (limited to 'app/src/test/java/invalid/lena/scrcpy/VideoStreamTest.java')
| -rw-r--r-- | app/src/test/java/invalid/lena/scrcpy/VideoStreamTest.java | 61 |
1 files changed, 4 insertions, 57 deletions
diff --git a/app/src/test/java/invalid/lena/scrcpy/VideoStreamTest.java b/app/src/test/java/invalid/lena/scrcpy/VideoStreamTest.java index 9d132f6..38d7416 100644 --- a/app/src/test/java/invalid/lena/scrcpy/VideoStreamTest.java +++ b/app/src/test/java/invalid/lena/scrcpy/VideoStreamTest.java @@ -19,8 +19,8 @@ public class VideoStreamTest { private static final class RecordingFrames implements VideoFrames { static final class Cfg { final int fourcc, w, h; Cfg(int f,int w,int h){this.fourcc=f;this.w=w;this.h=h;} } - static final class Feed { final byte[] data; final long ptsUs; final boolean isCfg; - Feed(byte[] d,long p,boolean c){data=d;ptsUs=p;isCfg=c;} } + static final class Feed { final byte[] data; final long ptsUs; final boolean isCfg, isKey; + Feed(byte[] d,long p,boolean c,boolean k){data=d;ptsUs=p;isCfg=c;isKey=k;} } final List<Cfg> configs = new ArrayList<>(); final List<Cfg> reconfigs = new ArrayList<>(); @@ -29,7 +29,7 @@ public class VideoStreamTest { @Override public void configure(int f, int w, int h) { configs.add(new Cfg(f, w, h)); } @Override public void reconfigure(int f, int w, int h) { reconfigs.add(new Cfg(f, w, h)); } - @Override public void feed(byte[] d, long pts, boolean c){ feeds.add(new Feed(d, pts, c)); } + @Override public void feed(byte[] d, long pts, boolean c, boolean k){ feeds.add(new Feed(d, pts, c, k)); } @Override public void release() { releases++; } } @@ -106,6 +106,7 @@ public class VideoStreamTest { // keyframe: keyframe flag is stripped from ptsUs assertEquals(1_000_000L, sink.feeds.get(1).ptsUs); assertEquals(5, sink.feeds.get(1).data.length); + assertTrue("second is keyframe", sink.feeds.get(1).isKey); assertEquals(2_000_000L, sink.feeds.get(2).ptsUs); } @@ -171,60 +172,6 @@ public class VideoStreamTest { } @Test - public void recorderTapSeesMetaAndFramesWithFlags() throws Exception { - byte[] csd = new byte[]{0x67, 0x42, (byte)0xe0, 0x1e}; - byte[] keyframe = new byte[]{10, 11, 12}; - byte[] delta = new byte[]{20, 21}; - long PTS_CFG = 1L << 62; - long PTS_KEY = (1L << 61) | 1_000_000L; - long PTS_DELT = 2_000_000L; - - byte[] bytes = cat( - fourcc(Wire.CODEC_H264), - sessionMeta(800, 600, false), - frame(PTS_CFG, csd), - frame(PTS_KEY, keyframe), - frame(PTS_DELT, delta)); - - RecordingFrames sink = new RecordingFrames(); - RecordingRecorder rec = new RecordingRecorder(); - VideoStream s = new VideoStream(new ByteArrayInputStream(bytes), sink, null); - s.setRecorder(rec); - s.run(); - - assertEquals(1, rec.metas.size()); - assertEquals(800, rec.metas.get(0)[1]); - assertEquals(600, rec.metas.get(0)[2]); - - assertEquals(3, rec.frames.size()); - assertTrue("cfg frame", rec.frames.get(0).isConfig); - assertTrue("key frame", rec.frames.get(1).isKeyframe); - assertTrue("delta is not config or key", - !rec.frames.get(2).isConfig && !rec.frames.get(2).isKeyframe); - assertEquals(csd.length, rec.frames.get(0).data.length); - assertEquals(keyframe.length, rec.frames.get(1).data.length); - assertEquals(delta.length, rec.frames.get(2).data.length); - } - - private static final class RecordingRecorder implements VideoRecorder { - static final class FrameRec { - final byte[] data; final long ptsUs; - final boolean isConfig, isKeyframe; - FrameRec(byte[] d, long p, boolean c, boolean k) { - data = d; ptsUs = p; isConfig = c; isKeyframe = k; - } - } - final List<int[]> metas = new ArrayList<>(); - final List<FrameRec> frames = new ArrayList<>(); - int closes = 0; - @Override public void onMeta(int f, int w, int h) { metas.add(new int[]{f, w, h}); } - @Override public void onFrame(byte[] d, long p, boolean c, boolean k) { - frames.add(new FrameRec(d, p, c, k)); - } - @Override public void close() { closes++; } - } - - @Test public void payloadIntegrity() throws Exception { byte[] payload = new byte[1024]; for (int i = 0; i < payload.length; i++) payload[i] = (byte) (i & 0xff); |