diff --git a/channels/chan_vpb.cc b/channels/chan_vpb.cc
index 9560a5aec36f2a2784117a626e2e052a0a866015..e643628055b507c3d7d7b4d9d606996417565438 100644
--- a/channels/chan_vpb.cc
+++ b/channels/chan_vpb.cc
@@ -2226,7 +2226,7 @@ static int vpb_write(struct ast_channel *ast, struct ast_frame *frame)
 
 	/* Apply extra gain ! */
 	if( p->txswgain > MAX_VPB_GAIN )
-		a_gain_vector(p->txswgain - MAX_VPB_GAIN , (short*)frame->data, frame->datalen / sizeof(short));
+		a_gain_vector(p->txswgain - MAX_VPB_GAIN , (short*)frame->data.ptr, frame->datalen / sizeof(short));
 
 /*	ast_debug(1, "%s: vpb_write: Applied gain..\n", p->dev); */
 /*	ast_debug(1, "%s: vpb_write: play_buf_time %d\n", p->dev, p->play_buf_time); */
@@ -2234,9 +2234,9 @@ static int vpb_write(struct ast_channel *ast, struct ast_frame *frame)
 	if ((p->read_state == 1) && (p->play_buf_time < 5)){
 		play_buf_time_start = ast_tvnow();
 /*		res = vpb_play_buf_sync(p->handle, (char *)frame->data, tdiff * 8 * 2); */
-		res = vpb_play_buf_sync(p->handle, (char *)frame->data, frame->datalen);
+		res = vpb_play_buf_sync(p->handle, (char *)frame->data.ptr, frame->datalen);
 		if(res == VPB_OK) {
-			short * data = (short*)frame->data;
+			short * data = (short*)frame->data.ptr;
 			ast_verb(6, "%s: vpb_write: Wrote chan (codec=%d) %d %d\n", p->dev, fmt, data[0], data[1]);
 		}
 		p->play_buf_time = ast_tvdiff_ms(ast_tvnow(), play_buf_time_start);
@@ -2392,7 +2392,7 @@ static void *do_chanreads(void *pvt)
 			ast_verb(6, "%s: chanreads: applied gain\n", p->dev);
 
 			fr->subclass = afmt;
-			fr->data = readbuf;
+			fr->data.ptr = readbuf;
 			fr->datalen = readlen;
 			fr->frametype = AST_FRAME_VOICE;