In C Create a simple set of functions for storing video A li

In C

Create a simple set of functions for storing video

A linked list of videos where each video object contains an image object

Each image is contained in a structure, which contains a 2D array

Implement the following header file function declarations

Header File:

NOTE:

stores image (a video frame) as a 2D array within a structure \"image\"

stores video (a sequence of frames) as a double-linked list of \"video\"

Example using API:

Solution

submissions.h:

#include<stdio.h>

struct image
{
int width;
int height;
char **img;
};

struct video
{
int frameNo;
struct image *img;
struct video*next;
};

struct image * createWhiteImg(unsigned int w,unsigned int h)
{
struct image *im=(struct image *)malloc(sizeof(struct image));
im->width=w;
im->height=h;
im->img=(char **)malloc(w * sizeof(char*));
int i=0,j=0;


for(i=0;i<w;i++)
im->img[i]=(char*) malloc(h * sizeof(char));

for(i=0;i<w;i++)
for(j=0;j<h;j++)
   im->img[i][j]=0;


return im;

}

void setPixel(struct image *im,unsigned int x,unsigned int y, unsigned char c)
{


im->img[x][y]=c;

}

unsigned char getPixel(struct image *im,unsigned int x,unsigned int y)
{
return im->img[x][y];
}


struct video * createEmptyFrameList(){

struct video *v=(struct video*)malloc(sizeof(struct video));

v->frameNo=0;
v->img=NULL;
v->next=NULL;


return v;

}

void copyImage(struct image *im1, struct image *im2)
{
int i=0,j=0;
im1->img=(char **)malloc(sizeof(char*) * im2->width);

im1->width=im2->width;
im1->height=im2->height;

for(i=0;i<im1->width;i++)
   im1->img[i]=(char *)malloc(sizeof(char) * im1->height);

for(i=0;i<im1->width;i++)
   for(j=0;j<im1->height;j++)
       im1->img[i][j]=im2->img[i][j];
}

struct video * insertFrameUpFront(struct video *vid,struct image *im)
{
struct video *v;
struct video *tmp;

if(vid->frameNo==0)//Inserting the first image, if not added before
{
  
   vid->frameNo=1;
   vid->img=(struct image *)malloc(sizeof(struct image));
   copyImage(vid->img,im);
}
else{

v=(struct video *)malloc(sizeof(struct video));
tmp=vid;

   while(tmp->next!=NULL)
       tmp=tmp->next;

   v->frameNo=tmp->frameNo+1;
   v->img=(struct image*)malloc(sizeof(struct image));
   copyImage(v->img,im);

   tmp->next=v;
   v->next=NULL;
   v->img=NULL;
}
  
return vid;
}

struct image *getNthFrame(struct video *v,int frno)
{
struct video *tmp=v;
int flag=0;
int i=0,n=frno-1;

printf(\"frno,n:%d, %d\ \", frno,n);
while(tmp!=NULL)
{
   if(n==0){
       return tmp->img;
   }
   else if(++i==n)
   {
       return tmp->img;
   }
   tmp=tmp->next;
}

return NULL;
}

struct video *deleteNthframe(struct video *v,int frameNo)
{
struct video *tmp=v;
struct video *tmp2=NULL;
int i=0,n=frameNo-1;

while(tmp!=NULL)
{
   if(n==0){
    v=v->next;  
       free(tmp);
       break;
   }
   else if(++i==n)
   {
       tmp2->next=tmp->next;


       free(tmp);

       break;
   }
   tmp2=tmp;
   tmp=tmp->next;
}

return v;
}

void print(struct video *v)
{
struct video *tmp=v;

while(tmp!=NULL){
printf(\"Video Frame:%d\ \",tmp->frameNo);
tmp=tmp->next;
}
}

main.c:

#include<stdlib.h>
#include<stdio.h>
#include \"submission.h\"

int main(void){

struct image *a=createWhiteImg(16,9);
struct image *b=createWhiteImg(16,9);
struct image *c=createWhiteImg(16,9);

setPixel(a,0,0,14);
setPixel(b,15,8,28);
setPixel(c,10,4,54);

struct image *d=NULL;

struct video *v=createEmptyFrameList();

v=insertFrameUpFront(v,c);
v=insertFrameUpFront(v,b);
v=insertFrameUpFront(v,a);

print(v);
v=deleteNthframe(v,1);
d=getNthFrame(v,1);
print(v);

if(d==NULL)
   printf(\"NULL d\ \");

unsigned char px=getPixel(d,10,4);

if(px==54)
   printf(\"Works\ \");
else
   printf(\"Bummer\ \");


return 0;
}

In C Create a simple set of functions for storing video A linked list of videos where each video object contains an image object Each image is contained in a st
In C Create a simple set of functions for storing video A linked list of videos where each video object contains an image object Each image is contained in a st
In C Create a simple set of functions for storing video A linked list of videos where each video object contains an image object Each image is contained in a st
In C Create a simple set of functions for storing video A linked list of videos where each video object contains an image object Each image is contained in a st

Get Help Now

Submit a Take Down Notice

Tutor
Tutor: Dr Jack
Most rated tutor on our site