1package flv
2
3import (
4	"fmt"
5	"github.com/gwuhaolin/livego/av"
6)
7
8var (
9	ErrAvcEndSEQ = fmt.Errorf("avc end sequence")
10)
11
12type Demuxer struct {
13}
14
15func NewDemuxer() *Demuxer {
16	return &Demuxer{}
17}
18
19func (d *Demuxer) DemuxH(p *av.Packet) error {
20	var tag Tag
21	_, err := tag.ParseMediaTagHeader(p.Data, p.IsVideo)
22	if err != nil {
23		return err
24	}
25	p.Header = &tag
26
27	return nil
28}
29
30func (d *Demuxer) Demux(p *av.Packet) error {
31	var tag Tag
32	n, err := tag.ParseMediaTagHeader(p.Data, p.IsVideo)
33	if err != nil {
34		return err
35	}
36	if tag.CodecID() == av.VIDEO_H264 &&
37		p.Data[0] == 0x17 && p.Data[1] == 0x02 {
38		return ErrAvcEndSEQ
39	}
40	p.Header = &tag
41	p.Data = p.Data[n:]
42
43	return nil
44}
45