7878# Methods
7979# -------
8080
81- function TranscodingStreams. initialize (codec:: ZstdCompressor )
82- code = initialize! (codec. cstream, codec. level)
83- if iserror (code)
84- zstderror (codec. cstream, code)
85- end
86- reset! (codec. cstream. ibuffer)
87- reset! (codec. cstream. obuffer)
88- return
89- end
90-
9181function TranscodingStreams. finalize (codec:: ZstdCompressor )
9282 if codec. cstream. ptr != C_NULL
9383 code = free! (codec. cstream)
@@ -96,12 +86,22 @@ function TranscodingStreams.finalize(codec::ZstdCompressor)
9686 end
9787 codec. cstream. ptr = C_NULL
9888 end
99- reset! (codec. cstream. ibuffer)
100- reset! (codec. cstream. obuffer)
101- return
89+ nothing
10290end
10391
10492function TranscodingStreams. startproc (codec:: ZstdCompressor , mode:: Symbol , error:: Error )
93+ if codec. cstream. ptr == C_NULL
94+ ptr = LibZstd. ZSTD_createCStream ()
95+ if ptr == C_NULL
96+ throw (OutOfMemoryError ())
97+ end
98+ codec. cstream. ptr = ptr
99+ i_code = initialize! (codec. cstream, codec. level)
100+ if iserror (i_code)
101+ error[] = ErrorException (" zstd error" )
102+ return :error
103+ end
104+ end
105105 code = reset! (codec. cstream, 0 #= unknown source size=# )
106106 if iserror (code)
107107 error[] = ErrorException (" zstd error" )
@@ -111,6 +111,9 @@ function TranscodingStreams.startproc(codec::ZstdCompressor, mode::Symbol, error
111111end
112112
113113function TranscodingStreams. process (codec:: ZstdCompressor , input:: Memory , output:: Memory , error:: Error )
114+ if codec. cstream. ptr == C_NULL
115+ error (" startproc must be called before process" )
116+ end
114117 cstream = codec. cstream
115118 ibuffer_starting_pos = UInt (0 )
116119 if codec. endOp == LibZstd. ZSTD_e_end &&
0 commit comments