diff --git a/codecs/codec_g723_1.c b/codecs/codec_g723_1.c
index 3e96ad65f8e7d0fac62cc7c1047f6fae46bbc507..0d793897f8b7c577c9ce181099874919665f0e26 100755
--- a/codecs/codec_g723_1.c
+++ b/codecs/codec_g723_1.c
@@ -115,7 +115,7 @@ static struct ast_frame *lintog723_sample(void)
 	f.subclass = AST_FORMAT_SLINEAR;
 	f.datalen = sizeof(slin_g723_ex);
 	/* Assume 8000 Hz */
-	f.samples = sizeof(slin_g723_ex)/16;
+	f.samples = sizeof(slin_g723_ex)/2;
 	f.mallocd = 0;
 	f.offset = 0;
 	f.src = __PRETTY_FUNCTION__;
@@ -130,7 +130,7 @@ static struct ast_frame *g723tolin_sample(void)
 	f.subclass = AST_FORMAT_G723_1;
 	f.datalen = sizeof(g723_slin_ex);
 	/* All frames are 30 ms long */
-	f.samples = 30;
+	f.samples = 240;
 	f.mallocd = 0;
 	f.offset = 0;
 	f.src = __PRETTY_FUNCTION__;
@@ -167,7 +167,7 @@ static struct ast_frame *g723tolin_frameout(struct ast_translator_pvt *pvt)
 	tmp->f.subclass = AST_FORMAT_SLINEAR;
 	tmp->f.datalen = tmp->tail * 2;
 	/* Assume 8000 Hz */
-	tmp->f.samples = tmp->tail / 8;
+	tmp->f.samples = tmp->tail;
 	tmp->f.mallocd = 0;
 	tmp->f.offset = AST_FRIENDLY_OFFSET;
 	tmp->f.src = __PRETTY_FUNCTION__;
@@ -296,9 +296,8 @@ static struct ast_frame *lintog723_frameout(struct ast_translator_pvt *pvt)
 		Coder(&tmp->cod, tmp->buf, tmp->outbuf + cnt);
 #endif
 		/* Assume 8000 Hz */
-		tmp->f.samples += 30;
-		/* FIXME:SLD: Shouldn't the [0] be [cnt]?? */
-		cnt += g723_len(tmp->outbuf[0]);
+		tmp->f.samples += 240;
+		cnt += g723_len(tmp->outbuf[cnt]);
 		tmp->tail -= Frame;
 		/* Move the data at the end of the buffer to the front */
 		if (tmp->tail)