mirror of
https://github.com/asticode/go-astiencoder.git
synced 2025-09-27 03:28:10 +08:00
Removed args from NewXXXFilterContext()
This commit is contained in:
2
go.mod
2
go.mod
@@ -3,7 +3,7 @@ module github.com/asticode/go-astiencoder
|
||||
go 1.13
|
||||
|
||||
require (
|
||||
github.com/asticode/go-astiav v0.27.0
|
||||
github.com/asticode/go-astiav v0.29.0
|
||||
github.com/asticode/go-astikit v0.42.0
|
||||
github.com/shirou/gopsutil/v3 v3.21.10
|
||||
github.com/stretchr/testify v1.7.0
|
||||
|
4
go.sum
4
go.sum
@@ -1,7 +1,7 @@
|
||||
github.com/StackExchange/wmi v1.2.1 h1:VIkavFPXSjcnS+O8yTq7NI32k0R5Aj+v39y29VYDOSA=
|
||||
github.com/StackExchange/wmi v1.2.1/go.mod h1:rcmrprowKIVzvc+NUiLncP2uuArMWLCbu9SBzvHz7e8=
|
||||
github.com/asticode/go-astiav v0.27.0 h1:DBOEEhCzBcBWiycxMdmA6+ENUoLLGAjjXqPgy7pGuQI=
|
||||
github.com/asticode/go-astiav v0.27.0/go.mod h1:K7D8UC6GeQt85FUxk2KVwYxHnotrxuEnp5evkkudc2s=
|
||||
github.com/asticode/go-astiav v0.29.0 h1:6HsG9SQFV7NKQX+60VQfwlENkpbXZudEcys72k5WdcY=
|
||||
github.com/asticode/go-astiav v0.29.0/go.mod h1:K7D8UC6GeQt85FUxk2KVwYxHnotrxuEnp5evkkudc2s=
|
||||
github.com/asticode/go-astikit v0.42.0 h1:pnir/2KLUSr0527Tv908iAH6EGYYrYta132vvjXsH5w=
|
||||
github.com/asticode/go-astikit v0.42.0/go.mod h1:h4ly7idim1tNhaVkdVBeXQZEE3L0xblP7fCWbgwipF0=
|
||||
github.com/davecgh/go-spew v1.1.0 h1:ZDRjVQ15GmhC3fiQ8ni8+OwkZQO4DARzQgrnXU1Liz8=
|
||||
|
@@ -4,7 +4,6 @@ import (
|
||||
"context"
|
||||
"errors"
|
||||
"fmt"
|
||||
"strconv"
|
||||
"strings"
|
||||
"sync/atomic"
|
||||
"time"
|
||||
@@ -60,9 +59,9 @@ type filtererFrameHandler interface {
|
||||
}
|
||||
|
||||
type filtererInput struct {
|
||||
ctx Context
|
||||
buffersrcContexts []*astiav.BuffersrcFilterContext
|
||||
name string
|
||||
ctx Context
|
||||
buffersrcCtxs []*astiav.BuffersrcFilterContext
|
||||
name string
|
||||
}
|
||||
|
||||
type filtererItem struct {
|
||||
@@ -266,7 +265,7 @@ func (f *Filterer) createGraph(ctxs map[astiencoder.Node]Context) (err error) {
|
||||
|
||||
// Create buffersink context
|
||||
var buffersinkContext *astiav.BuffersinkFilterContext
|
||||
if buffersinkContext, err = g.NewBuffersinkFilterContext(buffersink, "out", nil); err != nil {
|
||||
if buffersinkContext, err = g.NewBuffersinkFilterContext(buffersink, "out"); err != nil {
|
||||
err = fmt.Errorf("astilibav: creating buffersink context failed: %w", err)
|
||||
return
|
||||
}
|
||||
@@ -312,25 +311,23 @@ func (f *Filterer) createGraph(ctxs map[astiencoder.Node]Context) (err error) {
|
||||
return
|
||||
}
|
||||
|
||||
// Create args
|
||||
var args astiav.FilterArgs
|
||||
// Create buffersrc context parameters
|
||||
buffersrcCtxParameters := astiav.AllocBuffersrcFilterContextParameters()
|
||||
defer buffersrcCtxParameters.Free()
|
||||
switch ctx.MediaType {
|
||||
case astiav.MediaTypeAudio:
|
||||
args = astiav.FilterArgs{
|
||||
"channel_layout": ctx.ChannelLayout.String(),
|
||||
"sample_fmt": ctx.SampleFormat.String(),
|
||||
"sample_rate": strconv.Itoa(ctx.SampleRate),
|
||||
"time_base": ctx.TimeBase.String(),
|
||||
}
|
||||
buffersrcCtxParameters.SetChannelLayout(ctx.ChannelLayout)
|
||||
buffersrcCtxParameters.SetSampleFormat(ctx.SampleFormat)
|
||||
buffersrcCtxParameters.SetSampleRate(ctx.SampleRate)
|
||||
buffersrcCtxParameters.SetTimeBase(ctx.TimeBase)
|
||||
case astiav.MediaTypeVideo:
|
||||
args = astiav.FilterArgs{
|
||||
"pix_fmt": strconv.Itoa(int(ctx.PixelFormat)),
|
||||
"pixel_aspect": ctx.SampleAspectRatio.String(),
|
||||
"time_base": ctx.TimeBase.String(),
|
||||
"video_size": strconv.Itoa(ctx.Width) + "x" + strconv.Itoa(ctx.Height),
|
||||
}
|
||||
buffersrcCtxParameters.SetHeight(ctx.Height)
|
||||
buffersrcCtxParameters.SetPixelFormat(ctx.PixelFormat)
|
||||
buffersrcCtxParameters.SetSampleAspectRatio(ctx.SampleAspectRatio)
|
||||
buffersrcCtxParameters.SetTimeBase(ctx.TimeBase)
|
||||
buffersrcCtxParameters.SetWidth(ctx.Width)
|
||||
if ctx.FrameRate.Num() > 0 {
|
||||
args["frame_rate"] = ctx.FrameRate.String()
|
||||
buffersrcCtxParameters.SetFramerate(ctx.FrameRate)
|
||||
}
|
||||
default:
|
||||
err = fmt.Errorf("astilibav: media type %s is not handled by filterer", ctx.MediaType)
|
||||
@@ -339,7 +336,7 @@ func (f *Filterer) createGraph(ctxs map[astiencoder.Node]Context) (err error) {
|
||||
|
||||
// Create buffersrc ctx
|
||||
var buffersrcCtx *astiav.BuffersrcFilterContext
|
||||
if buffersrcCtx, err = g.NewBuffersrcFilterContext(buffersrc, "in", args); err != nil {
|
||||
if buffersrcCtx, err = g.NewBuffersrcFilterContext(buffersrc, "in"); err != nil {
|
||||
err = fmt.Errorf("astilibav: creating buffersrc context failed: %w", err)
|
||||
return
|
||||
}
|
||||
@@ -347,6 +344,18 @@ func (f *Filterer) createGraph(ctxs map[astiencoder.Node]Context) (err error) {
|
||||
// Make sure buffersrc context is freed
|
||||
c.Add(buffersrcCtx.FilterContext().Free)
|
||||
|
||||
// Set buffersrc context parameters
|
||||
if err = buffersrcCtx.SetParameters(buffersrcCtxParameters); err != nil {
|
||||
err = fmt.Errorf("main: setting buffersrc context parameters failed: %w", err)
|
||||
return
|
||||
}
|
||||
|
||||
// Initialize buffersrc context
|
||||
if err = buffersrcCtx.Initialize(); err != nil {
|
||||
err = fmt.Errorf("main: initializing buffersrc context failed: %w", err)
|
||||
return
|
||||
}
|
||||
|
||||
// Create outputs
|
||||
o := astiav.AllocFilterInOut()
|
||||
o.SetName(i.name)
|
||||
@@ -385,7 +394,7 @@ func (f *Filterer) createGraph(ctxs map[astiencoder.Node]Context) (err error) {
|
||||
f.buffersinkContext = buffersinkContext
|
||||
for _, u := range inputUpdates {
|
||||
u.i.ctx = u.ctx
|
||||
u.i.buffersrcContexts = u.ctxs
|
||||
u.i.buffersrcCtxs = u.ctxs
|
||||
}
|
||||
f.g = g
|
||||
f.gc = c
|
||||
@@ -596,9 +605,9 @@ func (f *Filterer) HandleFrame(p FrameHandlerPayload) {
|
||||
// Loop through frames to add
|
||||
for _, v := range framesToAdd {
|
||||
// Loop through buffer ctxs
|
||||
for _, buffersrcContext := range v.i.buffersrcContexts {
|
||||
for _, buffersrcCtx := range v.i.buffersrcCtxs {
|
||||
// Add frame
|
||||
if err := buffersrcContext.AddFrame(v.f, astiav.NewBuffersrcFlags(astiav.BuffersrcFlagKeepRef)); err != nil {
|
||||
if err := buffersrcCtx.AddFrame(v.f, astiav.NewBuffersrcFlags(astiav.BuffersrcFlagKeepRef)); err != nil {
|
||||
// TODO Fill intput frame when frame handler strategy is pts?
|
||||
emitError(f, f.eh, err, "adding frame to buffersrc")
|
||||
continue
|
||||
|
Reference in New Issue
Block a user