Skip to content

Commit c59ae07

Browse files
authored
Merge pull request #25 from mutablelogic/ffmpeg61
Small changes
2 parents 74a2c76 + 2f9f9b1 commit c59ae07

File tree

5 files changed

+34
-48
lines changed

5 files changed

+34
-48
lines changed

.github/workflows/on_pull_request_merge.yaml

Lines changed: 0 additions & 22 deletions
Original file line numberDiff line numberDiff line change
@@ -4,28 +4,6 @@ on:
44
pull_request:
55
branches: [ main ]
66
jobs:
7-
analyze:
8-
name: Analyze
9-
runs-on: ubuntu-24.04
10-
permissions:
11-
actions: read
12-
contents: read
13-
security-events: write
14-
strategy:
15-
fail-fast: false
16-
matrix:
17-
language: [ 'go' ]
18-
steps:
19-
- name: Checkout repository
20-
uses: actions/checkout@v4
21-
- name: Initialize CodeQL
22-
uses: github/codeql-action/init@v3
23-
with:
24-
languages: ${{ matrix.language }}
25-
- name: Autobuild
26-
uses: github/codeql-action/autobuild@v3
27-
- name: Perform CodeQL Analysis
28-
uses: github/codeql-action/analyze@v3
297
test:
308
name: Test
319
runs-on: ubuntu-24.04

cmd/cli/probe.go

Lines changed: 14 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -18,24 +18,26 @@ var (
1818
reDevice = regexp.MustCompile(`^([a-zA-Z0-9]+):([^\/].*|)$`)
1919
)
2020

21-
func (cmd *ProbeCmd) Run(globals *Globals) error {
22-
var format media.Format
23-
24-
manager := globals.manager
25-
26-
filter := media.NONE
21+
func formatFromPath(manager media.Manager, filter media.MediaType, path string) (media.Format, string) {
22+
if m := reDevice.FindStringSubmatch(path); m != nil {
2723

28-
// Try device first
29-
if m := reDevice.FindStringSubmatch(cmd.Path); m != nil {
30-
cmd.Path = m[2]
3124
fmts := manager.InputFormats(filter|media.DEVICE, m[1])
3225
if len(fmts) > 0 {
33-
format = fmts[0]
26+
return fmts[0], m[2]
3427
}
3528
}
29+
return nil, path
30+
}
31+
32+
func (cmd *ProbeCmd) Run(globals *Globals) error {
33+
var format media.Format
34+
35+
// Get format and path
36+
manager := globals.manager
37+
format, path := formatFromPath(manager, media.NONE, cmd.Path)
3638

37-
// Open the media file or device
38-
reader, err := manager.Open(cmd.Path, format, cmd.Opts)
39+
// Open a reader
40+
reader, err := manager.Open(path, format, cmd.Opts)
3941
if err != nil {
4042
return err
4143
}

cmd/cli/thumbnails.go

Lines changed: 10 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -16,18 +16,24 @@ import (
1616
)
1717

1818
type ThumbnailsCmd struct {
19-
Path string `arg:"" required:"" help:"Media file or path" type:"path"`
19+
Path string `arg:"" required:"" help:"Media file, device or path" type:"string"`
2020
Dur time.Duration `name:"duration" help:"Duration between thumnnails" type:"duration" default:"1m"`
2121
Width int `name:"width" help:"Width of thumbnail" type:"int" default:"320"`
2222
}
2323

2424
func (cmd *ThumbnailsCmd) Run(globals *Globals) error {
25+
// If we have a device, then use this
26+
format, path := formatFromPath(globals.manager, media.NONE, cmd.Path)
27+
if format != nil {
28+
return cmd.mediaWalker(globals.ctx, globals.manager, format, path)
29+
}
30+
2531
// Create the walker with the processor callback
2632
walker := file.NewWalker(func(ctx context.Context, root, relpath string, info fs.FileInfo) error {
2733
if info.IsDir() || info.Size() == 0 {
2834
return nil
2935
}
30-
if err := cmd.mediaWalker(ctx, globals.manager, filepath.Join(root, relpath)); err != nil {
36+
if err := cmd.mediaWalker(ctx, globals.manager, nil, filepath.Join(root, relpath)); err != nil {
3137
if err == context.Canceled {
3238
globals.manager.Infof("Cancelled\n")
3339
} else {
@@ -41,8 +47,8 @@ func (cmd *ThumbnailsCmd) Run(globals *Globals) error {
4147
return walker.Walk(globals.ctx, cmd.Path)
4248
}
4349

44-
func (cmd *ThumbnailsCmd) mediaWalker(ctx context.Context, manager media.Manager, path string) error {
45-
reader, err := manager.Open(path, nil)
50+
func (cmd *ThumbnailsCmd) mediaWalker(ctx context.Context, manager media.Manager, format media.Format, path string) error {
51+
reader, err := manager.Open(path, format)
4652
if err != nil {
4753
return err
4854
}

sys/ffmpeg61/avcodec_parameters.go

Lines changed: 6 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -18,16 +18,16 @@ import "C"
1818
// TYPES
1919

2020
type jsonAVCodecParametersAudio struct {
21-
SampleFormat AVSampleFormat `json:"format,omitempty"`
22-
SampleRate int `json:"sample_rate,omitempty"`
23-
ChannelLayout AVChannelLayout `json:"channel_layout,omitempty"`
21+
SampleFormat AVSampleFormat `json:"format"`
22+
SampleRate int `json:"sample_rate"`
23+
ChannelLayout AVChannelLayout `json:"channel_layout"`
2424
FrameSize int `json:"frame_size,omitempty"`
2525
}
2626

2727
type jsonAVCodecParameterVideo struct {
28-
PixelFormat AVPixelFormat `json:"format,omitempty"`
29-
Width int `json:"width,omitempty"`
30-
Height int `json:"height,omitempty"`
28+
PixelFormat AVPixelFormat `json:"format"`
29+
Width int `json:"width"`
30+
Height int `json:"height"`
3131
SampleAspectRatio AVRational `json:"sample_aspect_ratio,omitempty"`
3232
}
3333

sys/ffmpeg61/avformat.go

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -114,8 +114,8 @@ type jsonAVFormatContext struct {
114114
Url string `json:"url,omitempty"`
115115
NumStreams uint `json:"nb_streams,omitempty"`
116116
Streams []*AVStream `json:"streams,omitempty"`
117-
StartTime int64 `json:"start_time,omitempty"`
118-
Duration int64 `json:"duration,omitempty"`
117+
StartTime AVTimestamp `json:"start_time,omitempty"`
118+
Duration AVTimestamp `json:"duration,omitempty"`
119119
BitRate int64 `json:"bit_rate,omitempty"`
120120
PacketSize uint `json:"packet_size,omitempty"`
121121
Flags AVFormatFlag `json:"flags,omitempty"`
@@ -129,8 +129,8 @@ func (ctx *AVFormatContext) MarshalJSON() ([]byte, error) {
129129
Url: C.GoString(ctx.url),
130130
NumStreams: uint(ctx.nb_streams),
131131
Streams: ctx.Streams(),
132-
StartTime: int64(ctx.start_time),
133-
Duration: int64(ctx.duration),
132+
StartTime: AVTimestamp(ctx.start_time),
133+
Duration: AVTimestamp(ctx.duration),
134134
BitRate: int64(ctx.bit_rate),
135135
PacketSize: uint(ctx.packet_size),
136136
Flags: AVFormatFlag(ctx.flags),

0 commit comments

Comments
 (0)