nus.soc.cs5248 ooi wei tsang mpeg + rtp. nus.soc.cs5248 ooi wei tsang previously, on cs5248 mpeg...

43
NUS.SOC.CS5248 Ooi Wei Tsang MPEG + RTP

Upload: hugo-mcdonald

Post on 18-Dec-2015

226 views

Category:

Documents


0 download

TRANSCRIPT

Page 1: NUS.SOC.CS5248 Ooi Wei Tsang MPEG + RTP. NUS.SOC.CS5248 Ooi Wei Tsang Previously, on CS5248 MPEG Compression Sequence, GOP, Picture, Slice, Macroblock,

NUS.SOC.CS5248Ooi Wei Tsang

MPEG + RTP

Page 2: NUS.SOC.CS5248 Ooi Wei Tsang MPEG + RTP. NUS.SOC.CS5248 Ooi Wei Tsang Previously, on CS5248 MPEG Compression Sequence, GOP, Picture, Slice, Macroblock,

NUS.SOC.CS5248Ooi Wei Tsang

Previously, on CS5248

MPEG Compression Sequence, GOP, Picture, Slice,

Macroblock, Block, DC/AC Coefficient

I-Frame, P-Frame, B-Frame

Page 3: NUS.SOC.CS5248 Ooi Wei Tsang MPEG + RTP. NUS.SOC.CS5248 Ooi Wei Tsang Previously, on CS5248 MPEG Compression Sequence, GOP, Picture, Slice, Macroblock,

NUS.SOC.CS5248Ooi Wei Tsang

Previously, on CS5248

RTP headers SSRC, Media Timestamp, Marker Bit,

Payload Type ..

Application-Level Framing

Page 4: NUS.SOC.CS5248 Ooi Wei Tsang MPEG + RTP. NUS.SOC.CS5248 Ooi Wei Tsang Previously, on CS5248 MPEG Compression Sequence, GOP, Picture, Slice, Macroblock,

NUS.SOC.CS5248Ooi Wei Tsang

You are Here

Network

Encoder

Sender

Middlebox

Receiver

Decoder

Page 5: NUS.SOC.CS5248 Ooi Wei Tsang MPEG + RTP. NUS.SOC.CS5248 Ooi Wei Tsang Previously, on CS5248 MPEG Compression Sequence, GOP, Picture, Slice, Macroblock,

NUS.SOC.CS5248Ooi Wei Tsang

Application-Level Framing

Page 6: NUS.SOC.CS5248 Ooi Wei Tsang MPEG + RTP. NUS.SOC.CS5248 Ooi Wei Tsang Previously, on CS5248 MPEG Compression Sequence, GOP, Picture, Slice, Macroblock,

NUS.SOC.CS5248Ooi Wei Tsang

How to send/recv?

Let the application decide, not protocol

stacks.

Tennenhouse + Clark

Page 7: NUS.SOC.CS5248 Ooi Wei Tsang MPEG + RTP. NUS.SOC.CS5248 Ooi Wei Tsang Previously, on CS5248 MPEG Compression Sequence, GOP, Picture, Slice, Macroblock,

NUS.SOC.CS5248Ooi Wei Tsang

Application Knows Best

How to reorder packetsWhether to ignore lossWhich packet to retransmit

Page 8: NUS.SOC.CS5248 Ooi Wei Tsang MPEG + RTP. NUS.SOC.CS5248 Ooi Wei Tsang Previously, on CS5248 MPEG Compression Sequence, GOP, Picture, Slice, Macroblock,

NUS.SOC.CS5248Ooi Wei Tsang

Application Data Unit (ADU)

Can be processed individually, even out-of-order

8-Bit PCM audio: 1 ADU = 1 ByteMPEG1 Video: 1 ADU =

Page 9: NUS.SOC.CS5248 Ooi Wei Tsang MPEG + RTP. NUS.SOC.CS5248 Ooi Wei Tsang Previously, on CS5248 MPEG Compression Sequence, GOP, Picture, Slice, Macroblock,

NUS.SOC.CS5248Ooi Wei Tsang

How to chop data into packets?

Every received packet should be useful (even in very lossy environment)

Ideally, 1 ADU in 1 packet

Page 10: NUS.SOC.CS5248 Ooi Wei Tsang MPEG + RTP. NUS.SOC.CS5248 Ooi Wei Tsang Previously, on CS5248 MPEG Compression Sequence, GOP, Picture, Slice, Macroblock,

NUS.SOC.CS5248Ooi Wei Tsang

RTP Payload Header

RTP HeaderRTP Payload

HeaderRTP Payload

•MPEG-1? 2?•Temporal Reference•I? P? B?•Begin of Slice? End of Slice?

Page 11: NUS.SOC.CS5248 Ooi Wei Tsang MPEG + RTP. NUS.SOC.CS5248 Ooi Wei Tsang Previously, on CS5248 MPEG Compression Sequence, GOP, Picture, Slice, Macroblock,

NUS.SOC.CS5248Ooi Wei Tsang

RTP Header

Media Timestamp: 32 bits the instant the first byte in this packet is

captured 90 kHz timestamp (90000 = 1 second)

Page 12: NUS.SOC.CS5248 Ooi Wei Tsang MPEG + RTP. NUS.SOC.CS5248 Ooi Wei Tsang Previously, on CS5248 MPEG Compression Sequence, GOP, Picture, Slice, Macroblock,

NUS.SOC.CS5248Ooi Wei Tsang

RTP Header

Marker Bit: 1 if contains the last byte of a frame

Page 13: NUS.SOC.CS5248 Ooi Wei Tsang MPEG + RTP. NUS.SOC.CS5248 Ooi Wei Tsang Previously, on CS5248 MPEG Compression Sequence, GOP, Picture, Slice, Macroblock,

NUS.SOC.CS5248Ooi Wei Tsang

RTP Header

Payload Type: 7 bits 32 for MPEG-1

Page 14: NUS.SOC.CS5248 Ooi Wei Tsang MPEG + RTP. NUS.SOC.CS5248 Ooi Wei Tsang Previously, on CS5248 MPEG Compression Sequence, GOP, Picture, Slice, Macroblock,

NUS.SOC.CS5248Ooi Wei Tsang

RTP Payload Header

MBZ (5 bits) Unused. Must be 0

Page 15: NUS.SOC.CS5248 Ooi Wei Tsang MPEG + RTP. NUS.SOC.CS5248 Ooi Wei Tsang Previously, on CS5248 MPEG Compression Sequence, GOP, Picture, Slice, Macroblock,

NUS.SOC.CS5248Ooi Wei Tsang

RTP Payload Header

T (1 bit) 1 if there is a MPEG-2 Extension Header

after this header.

Page 16: NUS.SOC.CS5248 Ooi Wei Tsang MPEG + RTP. NUS.SOC.CS5248 Ooi Wei Tsang Previously, on CS5248 MPEG Compression Sequence, GOP, Picture, Slice, Macroblock,

NUS.SOC.CS5248Ooi Wei Tsang

RTP Payload Header

Temporal Reference (10 bits) The ‘frame number’ of the current frame

within the GOP

Page 17: NUS.SOC.CS5248 Ooi Wei Tsang MPEG + RTP. NUS.SOC.CS5248 Ooi Wei Tsang Previously, on CS5248 MPEG Compression Sequence, GOP, Picture, Slice, Macroblock,

NUS.SOC.CS5248Ooi Wei Tsang

RTP Payload Header

AN bit and N bit Set to 0 for MPEG-1

Page 18: NUS.SOC.CS5248 Ooi Wei Tsang MPEG + RTP. NUS.SOC.CS5248 Ooi Wei Tsang Previously, on CS5248 MPEG Compression Sequence, GOP, Picture, Slice, Macroblock,

NUS.SOC.CS5248Ooi Wei Tsang

RTP Payload Header

S (1 bit) Is there a sequence header in this packet?

Page 19: NUS.SOC.CS5248 Ooi Wei Tsang MPEG + RTP. NUS.SOC.CS5248 Ooi Wei Tsang Previously, on CS5248 MPEG Compression Sequence, GOP, Picture, Slice, Macroblock,

NUS.SOC.CS5248Ooi Wei Tsang

RTP Payload Header

BS (1 bit) and ES (1bit) BS is 1 iff the ‘first’ byte of this payload is a slice

header ES is 1 iff the last byte of this payload is the end of a

slice

Page 20: NUS.SOC.CS5248 Ooi Wei Tsang MPEG + RTP. NUS.SOC.CS5248 Ooi Wei Tsang Previously, on CS5248 MPEG Compression Sequence, GOP, Picture, Slice, Macroblock,

NUS.SOC.CS5248Ooi Wei Tsang

RTP Payload Header

Picture Type (3 bits) I (1), P (2), B (3), D (4)

Page 21: NUS.SOC.CS5248 Ooi Wei Tsang MPEG + RTP. NUS.SOC.CS5248 Ooi Wei Tsang Previously, on CS5248 MPEG Compression Sequence, GOP, Picture, Slice, Macroblock,

NUS.SOC.CS5248Ooi Wei Tsang

RTP Payload Header

Motion Vectors Information Get from most recent picture header

Page 22: NUS.SOC.CS5248 Ooi Wei Tsang MPEG + RTP. NUS.SOC.CS5248 Ooi Wei Tsang Previously, on CS5248 MPEG Compression Sequence, GOP, Picture, Slice, Macroblock,

NUS.SOC.CS5248Ooi Wei Tsang

Fragmentation Rules

Sequence header: at the start of payload

GOP header: at the start of a payload (or follows Sequence header)

Picture header: at the start of a payload (or follows Sequence/GOP header)

Page 23: NUS.SOC.CS5248 Ooi Wei Tsang MPEG + RTP. NUS.SOC.CS5248 Ooi Wei Tsang Previously, on CS5248 MPEG Compression Sequence, GOP, Picture, Slice, Macroblock,

NUS.SOC.CS5248Ooi Wei Tsang

Fragmentation Rules

A slice must be either First data in the packet, or Follows integral number of slices

A slice may be fragmented if exceeds the size of a packet

Page 24: NUS.SOC.CS5248 Ooi Wei Tsang MPEG + RTP. NUS.SOC.CS5248 Ooi Wei Tsang Previously, on CS5248 MPEG Compression Sequence, GOP, Picture, Slice, Macroblock,

NUS.SOC.CS5248Ooi Wei Tsang

Packet Size

1 MTU is 1500 bytes IP HeaderUDP HeaderRTP HeaderRTP Payload HeaderPayload Size =

Page 25: NUS.SOC.CS5248 Ooi Wei Tsang MPEG + RTP. NUS.SOC.CS5248 Ooi Wei Tsang Previously, on CS5248 MPEG Compression Sequence, GOP, Picture, Slice, Macroblock,

NUS.SOC.CS5248Ooi Wei Tsang

Project 1

Packetize MPEG-1 Video into RTP Packets

Page 26: NUS.SOC.CS5248 Ooi Wei Tsang MPEG + RTP. NUS.SOC.CS5248 Ooi Wei Tsang Previously, on CS5248 MPEG Compression Sequence, GOP, Picture, Slice, Macroblock,

NUS.SOC.CS5248Ooi Wei Tsang

Goal

Read MPEG-1 video, output RTP packets with proper: RTP headers RTP payload headers fragmentation

Page 27: NUS.SOC.CS5248 Ooi Wei Tsang MPEG + RTP. NUS.SOC.CS5248 Ooi Wei Tsang Previously, on CS5248 MPEG Compression Sequence, GOP, Picture, Slice, Macroblock,

NUS.SOC.CS5248Ooi Wei Tsang

Mnt (Media Networking Toy)

C++Tcl/OTclUNIX

Page 28: NUS.SOC.CS5248 Ooi Wei Tsang MPEG + RTP. NUS.SOC.CS5248 Ooi Wei Tsang Previously, on CS5248 MPEG Compression Sequence, GOP, Picture, Slice, Macroblock,

NUS.SOC.CS5248Ooi Wei Tsang

Overview

C++

OTcl

MntComponents

MntData

Page 29: NUS.SOC.CS5248 Ooi Wei Tsang MPEG + RTP. NUS.SOC.CS5248 Ooi Wei Tsang Previously, on CS5248 MPEG Compression Sequence, GOP, Picture, Slice, Macroblock,

NUS.SOC.CS5248Ooi Wei Tsang

MntComponent

recv(MntData *data)push(MntData *data)

Page 30: NUS.SOC.CS5248 Ooi Wei Tsang MPEG + RTP. NUS.SOC.CS5248 Ooi Wei Tsang Previously, on CS5248 MPEG Compression Sequence, GOP, Picture, Slice, Macroblock,

NUS.SOC.CS5248Ooi Wei Tsang

MntPump

Subclass of MntComponent

No recv()pump_some( ) {

generate data push(data) pump_timer_.msched(time)

}

Page 31: NUS.SOC.CS5248 Ooi Wei Tsang MPEG + RTP. NUS.SOC.CS5248 Ooi Wei Tsang Previously, on CS5248 MPEG Compression Sequence, GOP, Picture, Slice, Macroblock,

NUS.SOC.CS5248Ooi Wei Tsang

Create and Link Components

set a [new MntA]set b [new MntB]

$a add_link_to $b$a instproc on_stop_pumping {} { puts “done!” exit}$a start_pumpingvwait forever

Page 32: NUS.SOC.CS5248 Ooi Wei Tsang MPEG + RTP. NUS.SOC.CS5248 Ooi Wei Tsang Previously, on CS5248 MPEG Compression Sequence, GOP, Picture, Slice, Macroblock,

NUS.SOC.CS5248Ooi Wei Tsang

Important Classes

MntComponent

MntRTPFileWriter

MntRTPFileReader

MntPump MntRTPPayloadDumper

MntMPEGFileRTPizer

Page 33: NUS.SOC.CS5248 Ooi Wei Tsang MPEG + RTP. NUS.SOC.CS5248 Ooi Wei Tsang Previously, on CS5248 MPEG Compression Sequence, GOP, Picture, Slice, Macroblock,

NUS.SOC.CS5248Ooi Wei Tsang

Important Classes

MntData

MntRTPMPEGPacket

MntRTPHdr MntRTPMPEGHdr

Page 34: NUS.SOC.CS5248 Ooi Wei Tsang MPEG + RTP. NUS.SOC.CS5248 Ooi Wei Tsang Previously, on CS5248 MPEG Compression Sequence, GOP, Picture, Slice, Macroblock,

NUS.SOC.CS5248Ooi Wei Tsang

MntRTPMPEGPacket

RTP HeaderRTP Payload

HeaderRTP Payload

MntRTPHdr *rtp_hdr_; MntRTPMPEGHdr *pl_hdr_; unsigned char *pl_data_; int pl_len_;

Page 35: NUS.SOC.CS5248 Ooi Wei Tsang MPEG + RTP. NUS.SOC.CS5248 Ooi Wei Tsang Previously, on CS5248 MPEG Compression Sequence, GOP, Picture, Slice, Macroblock,

NUS.SOC.CS5248Ooi Wei Tsang

Example Tcl Scripts

Page 36: NUS.SOC.CS5248 Ooi Wei Tsang MPEG + RTP. NUS.SOC.CS5248 Ooi Wei Tsang Previously, on CS5248 MPEG Compression Sequence, GOP, Picture, Slice, Macroblock,

NUS.SOC.CS5248Ooi Wei Tsang

Dealing with Bits

BitStream A buffer

buffer_ endDataPtr_ endBufPtr_

Page 37: NUS.SOC.CS5248 Ooi Wei Tsang MPEG + RTP. NUS.SOC.CS5248 Ooi Wei Tsang Previously, on CS5248 MPEG Compression Sequence, GOP, Picture, Slice, Macroblock,

NUS.SOC.CS5248Ooi Wei Tsang

Dealing with Bits

BitParser Read bits from BitStream

BitParser 1011101

Page 38: NUS.SOC.CS5248 Ooi Wei Tsang MPEG + RTP. NUS.SOC.CS5248 Ooi Wei Tsang Previously, on CS5248 MPEG Compression Sequence, GOP, Picture, Slice, Macroblock,

NUS.SOC.CS5248Ooi Wei Tsang

Basic Usage

#include “mnt_bit_parser.h”#include “mnt_bit_stream.h”

BitStream *bs = new BitStream(“a.mpg”);BitParser *bp = new BitParser();bp->wrap(bs);

int x;Bp_GetInt(bp, x);

Page 39: NUS.SOC.CS5248 Ooi Wei Tsang MPEG + RTP. NUS.SOC.CS5248 Ooi Wei Tsang Previously, on CS5248 MPEG Compression Sequence, GOP, Picture, Slice, Macroblock,

NUS.SOC.CS5248Ooi Wei Tsang

Dealing with MPEG Headers

MntMPEG1SeqHdrMntMPEG1GopHdrMntMPEG1PicHdrMntMPEG1SliceHdr

Page 40: NUS.SOC.CS5248 Ooi Wei Tsang MPEG + RTP. NUS.SOC.CS5248 Ooi Wei Tsang Previously, on CS5248 MPEG Compression Sequence, GOP, Picture, Slice, Macroblock,

NUS.SOC.CS5248Ooi Wei Tsang

Basic Operations

hdr->parse(bp)hdr->find(bp)hdr->skip(bp)hdr->dump(bp1,bp2)

Page 41: NUS.SOC.CS5248 Ooi Wei Tsang MPEG + RTP. NUS.SOC.CS5248 Ooi Wei Tsang Previously, on CS5248 MPEG Compression Sequence, GOP, Picture, Slice, Macroblock,

NUS.SOC.CS5248Ooi Wei Tsang

Example:MPEG Parsing

Page 42: NUS.SOC.CS5248 Ooi Wei Tsang MPEG + RTP. NUS.SOC.CS5248 Ooi Wei Tsang Previously, on CS5248 MPEG Compression Sequence, GOP, Picture, Slice, Macroblock,

NUS.SOC.CS5248Ooi Wei Tsang

Project Homepage

DescriptionsSkeleton CodeMnt Documentation IVLE Forums

Page 43: NUS.SOC.CS5248 Ooi Wei Tsang MPEG + RTP. NUS.SOC.CS5248 Ooi Wei Tsang Previously, on CS5248 MPEG Compression Sequence, GOP, Picture, Slice, Macroblock,

NUS.SOC.CS5248Ooi Wei Tsang

Advice

Use the source wiselyStart early