Skip to content

Commit 137cf4b

Browse files
committed
Added packet type
1 parent 5ca580f commit 137cf4b

File tree

4 files changed

+48
-6
lines changed

4 files changed

+48
-6
lines changed

cmd/cli/decode.go

Lines changed: 23 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -1,10 +1,12 @@
11
package main
22

33
import (
4-
"encoding/json"
4+
"context"
55
"fmt"
6+
"os"
67

78
// Packages
9+
"github.com/djthorpe/go-tablewriter"
810
"github.com/mutablelogic/go-media"
911
)
1012

@@ -29,14 +31,31 @@ func (cmd *DecodeCmd) Run(globals *Globals) error {
2931
}
3032
}
3133

34+
// Open media file
3235
reader, err := manager.Open(cmd.Path, format)
3336
if err != nil {
3437
return err
3538
}
3639
defer reader.Close()
3740

38-
data, _ := json.MarshalIndent(reader, "", " ")
39-
fmt.Println(string(data))
41+
// Create a decoder - copy streams
42+
decoder, err := reader.Decoder(nil)
43+
if err != nil {
44+
return err
45+
}
4046

41-
return nil
47+
// Demultiplex the stream
48+
header := []tablewriter.TableOpt{tablewriter.OptHeader()}
49+
tablewriter := tablewriter.New(os.Stdout, tablewriter.OptOutputText())
50+
return decoder.Demux(context.Background(), func(packet media.Packet) error {
51+
if packet == nil {
52+
return nil
53+
}
54+
if err := tablewriter.Write(packet, header...); err != nil {
55+
return err
56+
}
57+
// Reset the header
58+
header = header[:0]
59+
return nil
60+
})
4261
}

decoder.go

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -225,7 +225,7 @@ func (d *demuxer) Decode(context.Context, FrameFunc) error {
225225
func (d *decoder) decode(fn DecoderFunc, packet *ff.AVPacket) error {
226226
// Send the packet to the user defined packet function or
227227
// to the default version
228-
return fn(packet)
228+
return fn(newPacket(packet))
229229
}
230230

231231
/*

packet.go

Lines changed: 23 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,23 @@
1+
package media
2+
3+
import (
4+
// Packages
5+
ff "github.com/mutablelogic/go-media/sys/ffmpeg61"
6+
)
7+
8+
////////////////////////////////////////////////////////////////////////////////
9+
// TYPES
10+
11+
type packet struct {
12+
X string `json:"type"`
13+
*ff.AVPacket
14+
}
15+
16+
var _ Packet = (*packet)(nil)
17+
18+
////////////////////////////////////////////////////////////////////////////////
19+
// LIFECYCLE
20+
21+
func newPacket(ctx *ff.AVPacket) *packet {
22+
return &packet{"X", ctx}
23+
}

stream.go

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -39,5 +39,5 @@ func (stream *stream) Type() MediaType {
3939

4040
func (stream *stream) Parameters() Parameters {
4141
// TODO
42-
return nil
42+
return new(par)
4343
}

0 commit comments

Comments
 (0)