END_TEST START_TEST(test_uint24_be_to_uint32) { uint24_be ile; uint32 ibe; ile.b[2] = 0x33; ile.b[1] = 0x22; ile.b[0] = 0x11; ibe = uint24_be_to_uint32(ile); fail_if(ibe != 0x00112233); }
END_TEST START_TEST(test_flv_tag_set_timestamp_extended) { flv_tag tag; uint32 val; flv_tag_set_timestamp(&tag, 0x44332211); val = uint24_be_to_uint32(tag.timestamp); fail_if(val != 0x00332211, "expected 0x00332211, got 0x%X", val); fail_if(tag.timestamp_extended != 0x44, "expected 0x44, got 0x%hhX", tag.timestamp_extended); }
END_TEST START_TEST(test_flv_tag_set_timestamp_short) { flv_tag tag; uint32 val; flv_tag_set_timestamp(&tag, 0x00112233); val = uint24_be_to_uint32(tag.timestamp); fail_if(val != 0x00112233, "expected 0x00112233, got 0x%X", val); fail_if(tag.timestamp_extended != 0x00, "expected 0x00, got 0x%hhX", tag.timestamp_extended); }
static int json_on_video_tag(flv_tag * tag, flv_video_tag vt, flv_parser * parser) { json_emitter * je; je = (json_emitter*)parser->user_data; json_emit_object_key_z(je, "videoData"); json_emit_object_start(je); json_emit_object_key_z(je, "codecID"); json_emit_string_z(je, dump_string_get_video_codec(vt)); json_emit_object_key_z(je, "frameType"); json_emit_string_z(je, dump_string_get_video_frame_type(vt)); /* if AVC, detect frame type and composition time */ if (flv_video_tag_codec_id(vt) == FLV_VIDEO_TAG_CODEC_AVC) { flv_avc_packet_type type; /* packet type */ if (flv_read_tag_body(parser->stream, &type, sizeof(flv_avc_packet_type)) < sizeof(flv_avc_packet_type)) { return ERROR_INVALID_TAG; } json_emit_object_key_z(je, "AVCData"); json_emit_object_start(je); json_emit_object_key_z(je, "packetType"); json_emit_string_z(je, dump_string_get_avc_packet_type(type)); /* composition time */ if (type == FLV_AVC_PACKET_TYPE_NALU) { uint24_be composition_time; if (flv_read_tag_body(parser->stream, &composition_time, sizeof(uint24_be)) < sizeof(uint24_be)) { return ERROR_INVALID_TAG; } json_emit_object_key_z(je, "compositionTimeOffset"); json_emit_integer(je, uint24_be_to_uint32(composition_time)); } json_emit_object_end(je); } json_emit_object_end(je); return OK; }