Skip to content

Commit

Permalink
packet: Add memory management *Packet functions (#128)
Browse files Browse the repository at this point in the history
  • Loading branch information
xaionaro authored Feb 9, 2025
1 parent 5ed56d0 commit 30a782d
Show file tree
Hide file tree
Showing 2 changed files with 37 additions and 0 deletions.
19 changes: 19 additions & 0 deletions packet.go
Original file line number Diff line number Diff line change
Expand Up @@ -120,6 +120,25 @@ func (p *Packet) Clone() *Packet {
return newPacketFromC(C.av_packet_clone(p.c))
}

// https://ffmpeg.org/doxygen/7.0/group__lavc__packet.html#gade00f67930f4e2a3401b67b701d5b3a2
func (p *Packet) CopyProperties(src *Packet) error {
return newError(C.av_packet_copy_props(p.c, src.c))
}

// https://ffmpeg.org/doxygen/7.0/group__lavc__packet.html#ga8a6deff6c1809029037ffd760db3e0d4
func (p *Packet) MakeReferenceCounted() error {
return newError(C.av_packet_make_refcounted(p.c))
}

// https://ffmpeg.org/doxygen/7.0/group__lavc__packet.html#gaaa304ffdab83984ac995d134e4298d4b
func (p *Packet) MakeWritable() error {
return newError(C.av_packet_make_writable(p.c))
}

func (p *Packet) IsWritable() bool {
return p.c.buf != nil && C.av_buffer_is_writable(p.c.buf) != 0
}

// https://ffmpeg.org/doxygen/7.0/group__lavc__packet.html#gadfa708660b85a56749c753124de2da7d
func (p *Packet) AllocPayload(s int) error {
return newError(C.av_new_packet(p.c, C.int(s)))
Expand Down
18 changes: 18 additions & 0 deletions packet_test.go
Original file line number Diff line number Diff line change
Expand Up @@ -85,4 +85,22 @@ func TestPacket(t *testing.T) {
b = []byte{}
require.NoError(t, pkt6.FromData(b))
require.Equal(t, b, pkt6.Data())

pkt7 := AllocPacket()
require.NotNil(t, pkt7)
defer pkt7.Free()

require.NotEqual(t, pkt2.Dts(), pkt7.Dts())
require.NoError(t, pkt7.CopyProperties(pkt2))
require.Equal(t, pkt2.Dts(), pkt7.Dts())

pkt8 := pkt2.Clone()
defer pkt8.Free()
require.False(t, pkt8.IsWritable())
require.NoError(t, pkt8.MakeWritable())
require.True(t, pkt8.IsWritable())

pkt9 := pkt2.Clone()
defer pkt9.Free()
require.NoError(t, pkt9.MakeReferenceCounted())
}

0 comments on commit 30a782d

Please sign in to comment.