aboutsummaryrefslogtreecommitdiff
path: root/app/src/test/java/invalid/lena/scrcpy/VideoStreamTest.java
diff options
context:
space:
mode:
Diffstat (limited to 'app/src/test/java/invalid/lena/scrcpy/VideoStreamTest.java')
-rw-r--r--app/src/test/java/invalid/lena/scrcpy/VideoStreamTest.java61
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);