浏览代码

more alac fixes

Philippe G 4 年之前
父节点
当前提交
2bc4a8c807
共有 1 个文件被更改,包括 8 次插入21 次删除
  1. 8 21
      components/squeezelite/alac.c

+ 8 - 21
components/squeezelite/alac.c

@@ -516,26 +516,17 @@ static decode_state alac_decode(void) {
 	return DECODE_RUNNING;
 }
 
-static void alac_open(u8_t size, u8_t rate, u8_t chan, u8_t endianness) {
-	if (l->decoder)	alac_delete_decoder(l->decoder);
-	if (l->writebuf) free(l->writebuf);
-	if (l->chunkinfo) free(l->chunkinfo);
-	if (l->block_size) free(l->block_size);
-	if (l->stsc) free(l->stsc);
-	l->writebuf = l->decoder = l->chunkinfo = l->stsc = l->block_size = NULL;
-	l->skip = 0;
-	l->samples = l->sttssamples = 0;
-	l->empty = false;
-	l->pos = l->consume = l->sample = l->nextchunk = 0;
-}
-
 static void alac_close(void) {
 	if (l->decoder) alac_delete_decoder(l->decoder);
 	if (l->writebuf) free(l->writebuf);	
 	if (l->chunkinfo) free(l->chunkinfo);
 	if (l->block_size) free(l->block_size);
 	if (l->stsc) free(l->stsc);
-	l->writebuf = l->decoder = l->chunkinfo = l->stsc = l->block_size = NULL;
+	memset(l, 0, sizeof(struct alac));	
+}
+
+static void alac_open(u8_t size, u8_t rate, u8_t chan, u8_t endianness) {
+	alac_close();
 }
 
 struct codec *register_alac(void) {
@@ -549,13 +540,9 @@ struct codec *register_alac(void) {
 		alac_decode,    // decode
 	};
 	
-	l =  malloc(sizeof(struct alac));
-	if (!l) {
-		return NULL;
-	}	
-	
-	l->writebuf = l->decoder = l->chunkinfo = l->stsc = l->block_size = NULL;
-	
+	l =  calloc(1, sizeof(struct alac));
+	if (!l) return NULL;
+		
 	LOG_INFO("using alac to decode alc");
 	return &ret;
 }