|
| 1 | +defmodule ExWebRTC.RTP.VP8Test do |
| 2 | + use ExUnit.Case, async: true |
| 3 | + |
| 4 | + alias ExRTP.Packet |
| 5 | + alias ExWebRTC.RTP.VP8 |
| 6 | + |
| 7 | + @vp8_packet "test/fixtures/rtp/vp8_packet.bin" |
| 8 | + |
| 9 | + test "keyframe?/1" do |
| 10 | + # from https://github.com/jech/galene/blob/master/codecs/codecs_test.go |
| 11 | + binary1 = |
| 12 | + <<0x80, 0xE0, 0x71, 0x3E, 0x5D, 0x6F, 0x3C, 0xC5, 0x75, 0xC, 0x80, 0x96, 0x90, 0x80, 0xB0, |
| 13 | + 0x4C, 0x90, 0x2, 0x0, 0x9D, 0x1, 0x2A, 0x10, 0x0, 0x10, 0x0, 0x39, 0x3, 0x0, 0x0, 0x1C, |
| 14 | + 0x22, 0x16, 0x16, 0x22, 0x66, 0x12, 0x20, 0x4, 0x90, 0x40, 0x4E, 0x9E, 0x8D, 0xE9, 0x40, |
| 15 | + 0xFE, 0xFF, 0xAB, 0x59, 0x72, 0x30, 0xD1, 0xAF, 0xE4, 0x6A, 0x11, 0x3, 0xFD, 0x15, 0xE9, |
| 16 | + 0x2, 0x2E, 0xDF, 0xD9, 0xD1, 0xB8, 0x0, 0x0>> |
| 17 | + |
| 18 | + {:ok, packet1} = Packet.decode(binary1) |
| 19 | + assert VP8.keyframe?(packet1) |
| 20 | + |
| 21 | + binary2 = |
| 22 | + <<0x80, 0x6F, 0x61, 0x8F, 0xD5, 0x36, 0xDC, 0x15, 0x1B, 0x4A, 0xB5, 0x29, 0x78, 0x9, 0xA1, |
| 23 | + 0x93, 0xA0, 0x5B, 0xD8, 0xF1, 0xDE, 0x87, 0x23, 0x5A, 0xB9, 0x19, 0x97, 0xB7, 0xBD, 0xBF, |
| 24 | + 0xF7, 0x6E, 0xAD, 0x82, 0xC4, 0x70, 0x1C, 0xC9, 0x3A, 0xB4, 0x1F, 0x13, 0x45, 0xB5, 0xF1, |
| 25 | + 0x0, 0xA5, 0xA5, 0xA9, 0xD0, 0xA5, 0xDF, 0x67, 0x88, 0x26, 0x30, 0x32>> |
| 26 | + |
| 27 | + {:ok, packet2} = Packet.decode(binary2) |
| 28 | + assert not VP8.keyframe?(packet2) |
| 29 | + |
| 30 | + # https://github.com/elixir-webrtc/ex_webrtc/issues/234 |
| 31 | + binary_packet3 = File.read!(@vp8_packet) |
| 32 | + packet3 = :erlang.binary_to_term(binary_packet3) |
| 33 | + assert not VP8.keyframe?(packet3) |
| 34 | + end |
| 35 | +end |
0 commit comments